我写了一个获取youtube视频URL并下载的程序
今天我做了这样的事情:
http://www.youtube.com/get_video_info?video_id=jN0nWjvzeNc 从"/get_video?video_id=ID&t=TOKEN&fmt=FORMAT_ID“请求
http://www.youtube.com/get_video?video_id=jN0nWjvzeNc&t=vjVQa1PpcFMgAK0HB1VRbinpVOwm29eGugPh3fBi6Dg%3D&fmt=18 但是这不再起作用了!
新的下载URL是什么?
谢谢
发布于 2010-07-24 17:08:51
将&asv=2添加到URL的末尾。
发布于 2012-11-14 09:04:19
实际上,我正在做一个类似的项目,从youtube下载视频文件。我发现get_video可能被Youtube屏蔽了。因此,我没有使用get_video,而是使用从get_video_info检索到的视频信息并提取它来获得视频文件的url。
在get_video_info中,有url_encoded_fmt_stream_map。编码后,可以找到不同格式的每个视频的url和签名值。因此,文件url类似于url value +‘&sig=’+sig value。
另外,我发现下面的主题与我的使用相同的方法。希望能对你有所帮助。
如果你对如何下载youtube视频文件感兴趣,有一个我写的小程序来演示这个过程。你可以自由地使用它。
发布于 2012-12-20 16:12:19
您可以使用以下命令直接获取流
http://www.youtube.com/get_video_info?video_id=jN0nWjvzeNc
我做了一个小脚本,在PHP中播放youtube视频。看看脚本是如何获取视频文件的。
<?php
@set_time_limit(0);
$id = $_GET['id']; //The youtube video ID
$type = $_GET['type']; //the MIME type of the video
parse_str(file_get_contents('http://www.youtube.com/get_video_info?video_id='.$id),$info);
$streams = explode(',',$info['url_encoded_fmt_stream_map']);
foreach($streams as $stream){
parse_str($stream,$real_stream);
$stype = $real_stream['type'];
if(strpos($real_stream['type'],';') !== false){
$tmp = explode(';',$real_stream['type']);
$stype = $tmp[0];
unset($tmp);
}
if($stype == $type && ($real_stream['quality'] == 'large' || $real_stream['quality'] == 'medium' || $real_stream['quality'] == 'small')){
header('Content-type: '.$stype);
header('Transfer-encoding: chunked');
@readfile($real_stream['url'].'&signature='.$real_stream['sig']); //Change here to do other things such as save the file to the filesystem etc.
ob_flush();
flush();
break;
}
}
?>请参阅有效的演示here。我希望这能对你有所帮助。
https://stackoverflow.com/questions/3311795
复制相似问题