代码之家  ›  专栏  ›  技术社区  ›  Ariyan

Youtube视频下载URL

  •  31
  • Ariyan  · 技术社区  · 15 年前


    今天我做了这个:
    1从“/get\u video\u info?video\u id=id”获取视频“令牌”,如:

    http://www.youtube.com/get_video_info?video_id=jN0nWjvzeNc  
    

    2从“/get\u Video?Video\u id=id&请求下载视频;t=代币;fmt=格式“如:

    http://www.youtube.com/get_video?video_id=jN0nWjvzeNc&t=vjVQa1PpcFMgAK0HB1VRbinpVOwm29eGugPh3fBi6Dg%3D&fmt=18  
    

    但这已经不行了!

    谢谢

    5 回复  |  直到 15 年前
        1
  •  10
  •   Iharob Al Asimi    9 年前

    添加 &asv=2

        2
  •  15
  •   Community CDub    8 年前

    实际上,我正在做一个类似的项目,从youtube下载视频文件。我发现getu视频可能被Youtube屏蔽了。因此,我没有使用get\u video,而是使用从get\u video\u info检索到的视频信息,并将其解压缩以获取视频文件url。

    另外,我发现下面的主题与我的使用相同的方法。希望能对你有所帮助。

    Can't Download from youtube

    如果您对如何下载youtube视频文件感兴趣,这里有一个由我编写的小程序来演示这个过程。你可以自由使用它。

    https://github.com/johnny0614/YoutubeVideoDownload

        3
  •  10
  •   Licson    12 年前

    只需使用

    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

        4
  •  4
  •   rongdong.bai    6 年前

    经过多次失败的尝试,这个github存储库帮助了我:

    https://github.com/rg3/youtube-dl

    youtube-dl 'https://www.youtube.com/watch?v=bo_efYhYU2A' --get-url

    下载mp4并另存为.mp4,如:

    youtube-dl 'https://www.youtube.com/watch?v=bo_efYhYU2A' -f mp4 -o a.mp4

        5
  •  2
  •   Vivek Jain    11 年前

    上次我正在修复一个坏掉的Chrome扩展来下载YouTube视频。我修改了剧本的部分。

    var links = new String();
    var downlink = new String();
    var has22 = new Boolean();
    has22 = false;
    var Marked = false;
    
    var FMT_DATA = fmt_url_map;//This is html text that you have to grab. In case of extension it was readily available through:document.getElementsByTagName('script');
    
    var StrSplitter1 = '%2C', StrSplitter2 = '%26', StrSplitter3 = '%3D';
    if (FMT_DATA.indexOf(',') > -1) { //Found ,
        StrSplitter1 = ',';
        StrSplitter2 = (FMT_DATA.indexOf('&') > -1) ? '&' : '\\u0026';
        StrSplitter3 = '=';
    }
    
    var videoURL = new Array();
    var FMT_DATA_PACKET = new Array();
    var FMT_DATA_PACKET = FMT_DATA.split(StrSplitter1);
    
    for (var i = 0; i < FMT_DATA_PACKET.length; i++) {
        var FMT_DATA_FRAME = FMT_DATA_PACKET[i].split(StrSplitter2);
        var FMT_DATA_DUEO = new Array();
    
        for (var j = 0; j < FMT_DATA_FRAME.length; j++) {
            var pair = FMT_DATA_FRAME[j].split(StrSplitter3);
            if (pair.length == 2) {
                FMT_DATA_DUEO[pair[0]] = pair[1];
            }
        }
    
        var url = (FMT_DATA_DUEO['url']) ? FMT_DATA_DUEO['url'] : null;
    
        if (url == null) continue;
        url = unescape(unescape(url)).replace(/\\\//g, '/').replace(/\\u0026/g, '&');
        var itag = (FMT_DATA_DUEO['itag']) ? FMT_DATA_DUEO['itag'] : null;
        var itag = (FMT_DATA_DUEO['itag']) ? FMT_DATA_DUEO['itag'] : null;
        if (itag == null) continue;
        var signature = (FMT_DATA_DUEO['sig']) ? FMT_DATA_DUEO['sig'] : null;
        if (signature != null) {
            url = url + "&signature=" + signature;
        }
        if (url.toLowerCase().indexOf('http') == 0) { // validate URL 
    
            if (itag == '5') {
                links += '<a href="' + url + '&title=' + username + title + quality240 + '"style="text-decoration:none"><span class="yt-uix-button-menu-item" id="v240p">FLV (240p)</span></a>';
            }
            if (itag == '18') {
                links += '<a href="' + url + '&title=' + username + title + quality360 + '"style="text-decoration:none"><span class="yt-uix-button-menu-item" id="v360p">MP4 (360p)</span></a>';
            }
            if (itag == '35') {
                links += '<a href="' + url + '&title=' + username + title + quality480 + '"style="text-decoration:none"><span class="yt-uix-button-menu-item" id="v480p">FLV (480p)</span></a>';
            }
            if (itag == '22') {
                links += '<a href="' + url + '&title=' + username + title + quality720 + '"style="text-decoration:none"><span class="yt-uix-button-menu-item" id="v720p">MP4 HD (720p)</span></a>';
            }
            if (itag == '37') {
                links += ' <a href="' + url + '&title=' + username + title + quality1080 + '"style="text-decoration:none"><span class="yt-uix-button-menu-item" id="v1080p">MP4 HD (1080p)</span></a>';
            }
            if (itag == '38') {
                links += '<a href="' + url + '&title=' + username + title + quality4k + '"style="text-decoration:none"><span class="yt-uix-button-menu-item"  id="v4k">MP4 HD (4K)</span></a>';
            }
    
            FavVideo();
            videoURL[itag] = url;
            console.log(itag);
        }
    }
    

    您可以从中获得单独的视频链接 videoURL[itag]

    扩展名可以从 here

    我希望这能帮助别人。这是工作方案(截至2013年4月6日)