Как вы используете youtube-dl для загрузки живых трансляций (которые живут)?
Просто интересно, возможно ли это или нет - когда я копирую URL-адрес видео в YouTube-dl, он выплевывает
[https @ 0x7fc351416080] inflate return value: -3, incorrect header check
Last message repeated 15 times
После этого он выплевывает пару строк красного текста, который, похоже, не хочет копировать правильно, поэтому я взял фрагмент
![Picture]()
Кто-нибудь знает, возможно ли это?
Ответы
Ответ 1
Я буду использовать это живое событие в качестве примера:
https://www.youtube.com/watch?v=6aXR-SL5L2o
Сначала перечислите форматы видео:
$ ~ 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)
Выберите формат, который вы хотите загрузить, и извлеките URL-адрес HLS m3u8 видео из манифеста. Я буду использовать 95 mp4 720p HLS , h264, aac @256k
для этого примера:
➜ ~ 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
Теперь, когда у вас есть список воспроизведения HLS, вы можете открыть этот URL-адрес в VLC и сохранить его, используя "Запись", или написать небольшую команду ffmpeg:
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
Нет необходимости передавать что-либо в ffmpeg
вы можете просто получить нужный формат, в данном примере это был формат "95".
Итак, когда вы знаете, что это 95, вы просто набираете:
youtube-dl -f 95 https://www.youtube.com/watch\?v\=6aXR-SL5L2o
то есть
youtube-dl -f <format number> <url>
Он начнет генерировать в рабочем каталоге <somename>.<probably mp4>.part
который является частично загруженным файлом, отпустите его и просто нажмите <Ctrl-C>
чтобы остановить захват.
Файл по-прежнему будет называться <something>.part
, переименуйте его в <whatever>.mp4
<something>.part
<whatever>.mp4
и вот оно...
Код ffmpeg
:
ffmpeg -i $(youtube-dl -f <format number> -g <url>) -copy <file_name>.ts
также работал для меня, но звук и видео вышли из синхронизации, использование только youtube-dl
казалось, дало лучший результат, хотя он также использует ffmpeg
.
Недостатком этого подхода является то, что вы не можете смотреть видео во время загрузки, хорошо, что вы можете открыть еще один FF или Chrome, но кажется, что mplayer
не может обработать вывод видео, пока не запущены youtube-dl
/ffmpeg
.
Ответ 3
Вы также можете ввести это:
URL=https://www.youtube.com/watch?v=6aXR-SL5L2o
youtube-dl -f 95 --hls-prefer-native $URL
Для некоторых других сайтов с потоковым контентом m3u, где это не работает, вы можете попробовать что-то вроде этого:
$ 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
....
Кстати: я добавил --hls-prefer-native
в свой ~/.config/youtube-dl.conf
, поэтому мне не нужно каждый раз печатать его :)