【问题标题】:Serve external file download with php使用 php 服务外部文件下载
【发布时间】:2012-09-12 12:35:44
【问题描述】:

我正在尝试使用我在网上找到的一些 sn-ps 制作个人 youtube 视频下载器。我得到一个由 youtube 提供的 url,它只对请求它的 ip 有用,所以它只在 localhost 上工作,因为当它在 web 服务器上时,下载失败,因为请求下载链接的 IP(web 服务器之一)与下载它的客户端(我)不同。我的问题是是否有某种方法:

a) 将视频下载到网络服务器,然后从那里下载到我的电脑(不是最好的)

b) 让 youtube 认为网络服务器正在下载它,而实际上是我正在使用网络服务器下载视频。

网址如下所示:

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 更改为您的 IP,仍然无法使用,我已经尝试过了。

【问题讨论】:

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

标签: php youtube


【解决方案1】:

所以试图找到一种类似于 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 是我在问题上发布的大 url,$filename 是视频的名称。

也许它会对某人有所帮助,所以我把它留在这里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多