wake-up-neo.com

Wie benutzt du youtube-dl, um Live-Streams herunterzuladen (die live sind)?

Ich frage mich nur, ob das möglich ist oder nicht - wenn ich die Video-URL in YouTube-dl kopiere, wird sie ausgespuckt

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

Danach spuckt es ein paar Zeilen roten Text aus, der anscheinend nicht richtig kopiert werden soll, also habe ich einen Ausschnitt genommen

Picture

Weiß jemand, ob das möglich ist?

28
user2824852

Ich werde dieses Live-Event als Beispiel verwenden:

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

Listen Sie zunächst die Formate für das Video auf:

$  ~ 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 aus, das Sie herunterladen möchten, und rufen Sie die HLS m3u8-URL des Videos aus dem Manifest ab. Ich werde 95 mp4 720p HLS , h264, aac @256k Für dieses Beispiel verwenden:

➜  ~ 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 die HLS-Wiedergabeliste haben, können Sie diese URL in VLC öffnen und mit "Aufzeichnen" speichern oder einen kleinen Befehl ffmpeg 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
48
JAL

Es ist nicht erforderlich, etwas an ffmpeg zu übergeben. Sie können einfach das gewünschte Format auswählen. In diesem Beispiel war es das Format "95".

Wenn Sie also wissen, dass es sich um 95 handelt, geben Sie einfach Folgendes ein:

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

das heißt:

youtube-dl -f <format number> <url>

Es wird im Arbeitsverzeichnis ein <somename>.<probably mp4>.part welches ist die teilweise heruntergeladene Datei, lass es los und drücke einfach <Ctrl-C>, um die Aufnahme zu stoppen.

Die Datei trägt weiterhin den Namen <something>.part, benenne es um in <whatever>.mp4 und da ist es ...

Der ffmpeg Code:

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

hat auch bei mir funktioniert, aber Ton und Video waren nicht synchron, nur mit youtube-dl schien ein besseres Ergebnis zu liefern, obwohl es auch ffmpeg verwendet.

Der Nachteil dieses Ansatzes ist, dass Sie das Video während des Herunterladens nicht ansehen können. Nun, Sie können noch einen weiteren FF oder Chrome öffnen, aber es scheint, dass mplayer die Videoausgabe nicht verarbeiten kann, bis youtube-dl/ffmpeg werden ausgeführt.

12
Andrés Cancer

Sie können dies auch eingeben:

URL=https://www.youtube.com/watch?v=6aXR-SL5L2o
youtube-dl -f 95 --hls-prefer-native $URL

Bei einigen anderen Websites mit m3u-Streaming-Inhalten, bei denen dies nicht funktioniert, können Sie Folgendes versuchen:

$ youtube-dl -F https://www.arte.tv/fr/videos/078132-001-A/cosmos-une-odyssee-a-travers-l-univers/ | grep m3u
HLS_XQ_2     m3u8       1280x720   VA-STA, Allemand 2200k 
HLS_XQ_1     m3u8       1280x720   VF-STF, Français 2200k 
$ youtube-dl -gf HLS_XQ_1 --get-filename https://www.arte.tv/fr/videos/078132-001-A/cosmos-une-odyssee-a-travers-l-univers/
https://arteptweb-vh.akamaihd.net/i/am/ptweb/078000/078100/078132-001-A_0_VF-STF_AMM-PTWEB_XQ.1AhsDgVG20.smil/master.m3u8
Cosmos_une_odyssee_a_travers_l_univers__HLS_XQ_1__078132-001-A.m3u8
$ youtube-dl -F https://arteptweb-vh.akamaihd.net/i/am/ptweb/078000/078100/078132-001-A_0_VF-STF_AMM-PTWEB_XQ.1AhsDgVG20.smil/master.m3u8
[generic] master: Requesting header
[generic] master: Downloading webpage
[generic] master: Downloading m3u8 information
[info] Available formats for master:
format code  extension  resolution note
61           mp4        audio only   61k , mp4a.40.2
419          mp4        384x216     419k , avc1.66.30, mp4a.40.2
923          mp4        640x360     923k , avc1.77.30, mp4a.40.2
1737         mp4        720x406    1737k , avc1.77.30, mp4a.40.2
2521         mp4        1280x720   2521k , avc1.77.30, mp4a.40.2 (best)
$ youtube-dl --hls-prefer-native -f 1737 https://arteptweb-vh.akamaihd.net/i/am/ptweb/078000/078100/078132-001-A_0_VF-STF_AMM-PTWEB_XQ.1AhsDgVG20.smil/master.m3u8 -o Cosmos_une_odyssee_a_travers_l_univers__HLS_XQ_1__078132-001-A.mp4
[generic] master: Requesting header
[generic] master: Downloading webpage
[generic] master: Downloading m3u8 information
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 257
[download] Destination: Cosmos_une_odyssee_a_travers_l_univers__HLS_XQ_1__078132-001-A.mp4
[download]   0.9% of ~731.27MiB at 624.95KiB/s ETA 13:13
....

Übrigens: Ich habe --hls-prefer-native In meinen ~/.config/youtube-dl.conf Eingegeben, damit ich es nicht jedes Mal eingeben muss :)

0
SebMa