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
Weiß jemand, ob das möglich ist?
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
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.
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 :)