2012-09-12 35 views
0

我想用我在网上找到的一些片段制作一个个人的YouTube视频下载器。我得到一个由youtube提供的url,它只对请求它的ip有用,所以它只在localhost上工作,因为当它在web服务器上时,下载失败,因为请求下载链接的IP(web服务器一个)与下载它的客户端(我)不一样。我的问题是,如果有某种方式:用php下载外部文件

一)下载视频到Web服务器,然后从那里(不是最好的一个下载到我的电脑)

B),让YouTube认为,网络服务器是在真正下载使用网络服务器下载视频的人时下载它。

的URL看起来像这样:

http://o-o---preferred---ams03s12---v13---lscache7.c.youtube.com/videoplayback?upn=TGDxfz8IZxI&sparams=cp%2Cgcr%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&fexp=917000%2C903802%2C901425%2C920917%2C922401%2C920704%2C912806%2C924412%2C913558%2C912706&key=yt1&itag=18&ipbits=8&signature=4F0668E4E49852653FA995D28FECC455B552327D.3DEB3B58D1C5343B5EA03B7DA21355326EF29B7E&mv=m&sver=3&mt=1347451352&ratebypass=yes&source=youtube&ms=au&gcr=es&expire=1347475934&ip=95.39.206.66&cp=U0hTTFRSU19ITkNOM19MTFdKOkVhV2otM1FhTXNj&id=2b4258153228ebc9

如果更改了IP在该网址到你仍然不工作,我已经与尝试。

+0

你能以某种方式使用你的服务器作为代理吗?即而不是将整个视频下载到您的服务器上,将原始数据流传输到您的服务器,然后直接将它们提供给您的Web客户端?我不确定这将如何实现,但我相信这是可能的。 – n00dle

回答

0

所以试图寻找一种类似于ianhales所说的方式,这是我最终所做的:它简单并且可能是最好的方式,但它可以帮助我解决另一个问题,即设置名称与文件名的对应YouTube视频。这里是:

$url=$_POST['url']; 
$filename=$_POST['name']; 

header('Content-type: video/mp4'); 
header('Content-Disposition: attachment; filename="'.$filename.'"'); 

echo file_get_contents($url); 

其中$ url是我发布在我的问题上的大网址,$ filename是视频的名称。

也许这将有助于某人,所以我离开它在这里。