URL de téléchargement de la vidéo sur Youtube

j'ai écrit un programme qui obtient L'URL vidéo youtube et les téléchargements il

Aujourd'hui j'ai fait ceci:

1. obtenez la vidéo "token" de " / get_video_info?video_id=ID" comme:

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

2. Télécharger la vidéo en la demandant à partir de " / get_video?video_id=ID&t = TOKEN&fmt=FORMAT_ID "like:

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

mais ça ne marche plus!

Quelle est la nouvelle URL de téléchargement?

Merci

30
demandé sur RYN 2010-07-22 21:50:19

4 réponses

ajouter &asv=2 à la fin de L'URL.

10
répondu rossy 2015-12-22 01:33:49

en fait, je travaille sur le projet similaire que le téléchargement du fichier vidéo à partir de youtube. Je trouve que le get_video pourrait être bloqué par Youtube. donc, au lieu d'utiliser get_video., J'utilise l'information vidéo récupérée à partir de get_video_info et l'extrait pour obtenir l'url du fichier vidéo.

dans get_video_info, il y a url_encoded_fmt_stream_map. Après l'encodage, vous pouvez trouver l'url et la valeur de signature de chaque vidéo avec un format différent. Donc l'url du fichier est comme [valeur url]+' & signature= ' +[valeur sig].

en outre, je trouve le sujet suivant qui utilise la même méthode que la mienne. L'espoir peut vous aider.

ne peut pas télécharger sur youtube

si vous êtes intéressé par la façon de télécharger le fichier vidéo youtube, Il ya un petit programme écrit par moi pour démontrer le processus. Vous êtes libre de l'utiliser.

https://github.com/johnny0614/YoutubeVideoDownload

14
répondu yujohnnyzhou 2017-05-23 12:34:48

vous pouvez obtenir le flux directement en utilisant seulement

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

j'ai fait un petit script pour diffuser des vidéos youtube en PHP. Voyez comment le script récupère le fichier vidéo.

<?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; 
    } 
}
?>

voir la démo de travail ici . J'espère que cela peut vous aider.

10
répondu Licson 2012-12-20 08:19:17

la dernière fois que je travaillais sur la fixation d'une des extensions Chrome cassé pour télécharger la vidéo YouTube. Je l'ai corrigé en modifiant le script.

(Javascript)

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);
    }
}

vous pouvez obtenir un lien vidéo séparé du tableau videoURL[itag] .

l'extension peut être téléchargée à partir de ici .

j'espère que cela aidera quelqu'un. C'est la solution de travail (à partir de 06-Avr-2013)

2
répondu Rajendra 2014-01-10 07:06:03