2016-05-05 15 views
17

Nur frage mich, ob das möglich ist oder nicht-, wenn ich die Video-URL in kopieren YouTube-dl es ausspucktWie benutzt man youtube-dl um Live Streams (das sind live) herunterzuladen?

[https @ 0x7fc351416080] inflate return value: -3, incorrect header check 
Last message repeated 15 times 

Danach ist es aus paar Zeilen von roten Text spuckt, das kopieren nicht scheinen zu wollen in richtig, so habe ich einen Ausschnitt

Picture

Wer weiß, ob dies möglich ist?

Antwort

31

Ich werde dieses Live-Ereignis als ein Beispiel verwenden:

https://www.youtube.com/watch?v=6aXR-SL5L2o

Zuerst zeigen die Formate für Video:

➜ youtube_live_test youtube-dl --list-formats https://www.youtube.com/watch\?v\=6aXR-SL5L2o 
[youtube] 6aXR-SL5L2o: Downloading webpage 
[youtube] 6aXR-SL5L2o: Downloading video info webpage 
[youtube] 6aXR-SL5L2o: Extracting video information 
[youtube] 6aXR-SL5L2o: Downloading formats manifest 
[youtube] 6aXR-SL5L2o: Downloading MPD manifest 
[info] Available formats for 6aXR-SL5L2o: 
format code extension resolution note 
91   mp4  144p  HLS , h264, aac @ 48k 
92   mp4  240p  HLS , h264, aac @ 48k 
93   mp4  360p  HLS , h264, aac @128k 
94   mp4  480p  HLS , h264, aac @128k 
95   mp4  720p  HLS , h264, aac @256k (best) 

Wählen Sie das Format, das Sie herunterladen möchten, und Holen Sie die HLS m3u8 URL des Videos aus dem Manifest. Ich werde 95 mp4 720p HLS , h264, aac @256k für dieses Beispiel werden:

➜ youtube_live_test youtube-dl -f 95 -g https://www.youtube.com/watch\?v\=6aXR-SL5L2o 
https://manifest.googlevideo.com/api/manifest/hls_playlist/id/6aXR-SL5L2o.1/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/goi/160/sgoap/itag%3D140/sgovp/itag%3D136/hls_chunk_host/r16---sn-ab5l6ne7.googlevideo.com/gcr/us/playlist_type/DVR/mm/32/mn/sn-ab5l6ne7/ms/lv/mv/u/pl/17/dover/3/fexp/9416126,9416891,9419451,9422596,9423554,9427790,9428193,9428398,9428974,9429011,9431012,9431164,9432683,9433096,9433946,9434343,9434833,9434847,9435186,9435741/upn/UNF1TiBtavY/sver/3/mt/1462544320/ip/64.125.177.124/ipbits/0/expire/1462565936/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,goi,sgoap,sgovp,hls_chunk_host,gcr,playlist_type,mm,mn,ms,mv,pl/signature/67EC57CB964D9D944DE2E1AB40F0E496DA2C73B4.8FBEF1974DF9DB1E614B9C96BA0FF8E52076B04F/key/dg_yt0/playlist/index.m3u8 

Nachdem Sie nun die HLS Playlist haben, können Sie diese URL in VLC öffnen und speichern Sie „Record“, oder einen kleinen ffmpeg Befehl schreiben:

ffmpeg -i \ 
https://manifest.googlevideo.com/api/manifest/hls_playlist/id/6aXR-SL5L2o.1/itag/95/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/cmbypass/yes/goi/160/sgoap/itag%3D140/sgovp/itag%3D136/hls_chunk_host/r16---sn-ab5l6ne7.googlevideo.com/gcr/us/playlist_type/DVR/mm/32/mn/sn-ab5l6ne7/ms/lv/mv/u/pl/17/dover/3/fexp/9416126,9416891,9419451,9422596,9423554,9427790,9428193,9428398,9428974,9429011,9431012,9431164,9432683,9433096,9433946,9434343,9434833,9434847,9435186,9435741/upn/UNF1TiBtavY/sver/3/mt/1462544320/ip/64.125.177.124/ipbits/0/expire/1462565936/sparams/ip,ipbits,expire,id,itag,source,requiressl,ratebypass,live,cmbypass,goi,sgoap,sgovp,hls_chunk_host,gcr,playlist_type,mm,mn,ms,mv,pl/signature/67EC57CB964D9D944DE2E1AB40F0E496DA2C73B4.8FBEF1974DF9DB1E614B9C96BA0FF8E52076B04F/key/dg_yt0/playlist/index.m3u8 \ 
-c copy output.ts 
+2

Wenn Sie das gewünschte Format gewählt haben, können Sie anstelle von Copy & Paste '$()' verwenden (bash command substitution): 'ffmpeg -i $ (youtube-dl -f 22 -g https: // www .youtube.com/watch \? v \ = 6aXR-SL5L2o) -c kopiert omg1.ts' – fbehrens

2

Es gibt keine Notwendigkeit, etwas an ffmpeg übergeben Sie können nur das gewünschte Format greifen, in diesem Beispiel war es das "95" -Format.

Also, wenn Sie wissen, dass es die 95 ist, geben Sie einfach:

youtube-dl -f 95 https://www.youtube.com/watch\?v\=6aXR-SL5L2o 

die

Es beginnt Erzeugung auf dem Arbeitsverzeichnis ein ..part das heißt ist die teilweise heruntergeladene Datei, lass es los und drücke einfach um die Aufnahme zu stoppen.

Die Datei wird noch .part benannt werden, es umbenennen, um Mp4 und da ist es ...

Die

ffmpeg -i $(youtube-dl -f <format number> -g <url>) -copy <file_name>.ts 

arbeitete auch für mich, aber Ton und Video bekam out of sync mit nur youtube-dl schien ein besseres Ergebnis zu erzielen, obwohl es zu ffmpeg verwendet.

Der Nachteil dieses Ansatzes ist, dass Sie das Video beim Herunterladen nicht ansehen können, Sie können ein weiteres FF oder Chrome öffnen, aber es scheint, dass mplayer die Videoausgabe nicht verarbeiten kann, bis youtube-dl/ffmpeg läuft.