it-swarm.com.de

URL zum Herunterladen von Youtube-Videos

Ich habe ein Programm geschrieben, das die URL des YouTube-Videos erhält und herunterlädt
Bis heute habe ich Folgendes getan:
1. Video "Token" von "/ get_video_info? video_id = ID" erhalten, wie: 

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

2. Laden Sie das Video herunter, indem Sie es von "/ get_video? Video_id = ID & t = TOKEN & fmt = FORMAT_ID" anfordern: 

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

Das funktioniert aber nicht mehr!
Wie lautet die neue Download-URL?

Vielen Dank

31
RYN

Fügen Sie am Ende der URL &asv=2 hinzu.

10
rossy

Eigentlich arbeite ich an einem ähnlichen Projekt, das die Videodatei von YouTube herunterlädt. Ich finde, dass das get_video möglicherweise von Youtube blockiert wird. Anstelle von get_video. verwende ich die aus get_video_info abgerufenen Videoinformationen und extrahiere sie, um die Videodatei-URL zu erhalten. 

In get_video_info gibt es url_encoded_fmt_stream_map. Nach der Kodierung können Sie die URL und den Signaturwert jedes Videos in einem anderen Format finden. Die Datei-URL ist also wie [URL-Wert] + '& Signatur =' + [Sig-Wert].

Zusätzlich finde ich folgendes Thema, das dieselbe Methode wie bei mir verwendet. Ich hoffe es kann dir helfen. 

Kann nicht von youtube herunterladen

Wenn Sie daran interessiert sind, wie Sie eine Youtube-Videodatei herunterladen können, gibt es ein kleines Programm, das den Prozess veranschaulicht. Sie können es frei benutzen.

https://github.com/johnny0614/YoutubeVideoDownload

15
yujohnnyzhou

Sie können den Stream direkt erhalten, wenn Sie nur verwenden 

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

Ich habe ein kleines Skript erstellt, um Youtube-Videos in PHP zu streamen. Sehen Sie, wie das Skript die Videodatei erhält.

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

Siehe die Arbeitsdemo hier . Ich hoffe das kann dir helfen.

10
Licson

Letztes Mal arbeitete ich an der Korrektur einer der defekten Chrome-Erweiterungen, um YouTube-Videos herunterzuladen. Ich habe es durch Ändern des Skriptteils behoben.

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

Sie können einen separaten Video-Link vom videoURL[itag]-Array erhalten.

Die Erweiterung kann von hier heruntergeladen werden.

Ich hoffe das würde jemandem helfen. Dies ist eine funktionierende Lösung (Stand vom 06.04.2013)

2
Rajendra

Nach vielen Fehlversuchen helfen mir diese Github-Repositories:

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

Holen Sie sich die URL nur wie:

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

mp4 herunterladen und als a.mp4 speichern:

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

Viel Glück.

1
rongdong.bai