Как вы используете youtube-dl для загрузки живых потоков (которые являются живыми)?



Просто интересно, возможно ли это или нет - когда я копирую URL-адрес видео в YouTube-dl он выплевывает



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


После этого он выплевывает пару строк красного текста, который, похоже, не хочет копироваться должным образом, поэтому я взял фрагмент



Изображение



Кто-нибудь знает, если это возможно?

576   2  

2 ответов:

Я буду использовать это живое событие в качестве примера:

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

Во-первых, перечислите форматы для видео:

➜  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)

Выберите формат, который вы хотите загрузить,и извлеките URL-адрес HLS m3u8 видео из манифеста. Я буду использовать 95 mp4 720p HLS , h264, aac @256k для этого примера:

➜  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

Теперь, когда у вас есть список воспроизведения 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

Нет необходимости передавать что-либо в ffmpeg вы можете просто захватить нужный формат, в данном примере это был формат "95".

Поэтому, как только вы узнаете, что это 95, вы просто набираете:
youtube-dl -f 95  https://www.youtube.com/watch\?v\=6aXR-SL5L2o

То есть

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

Он начнет генерировать на рабочем каталоге a ..часть, которая является частично загруженным файлом, отпустите его и просто нажмите, чтобы остановить захват.

Файл по-прежнему будет иметь имя .часть, переименуйте ее в. mp4 и вот она...

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

Также работал для меня, но звук и видео вышли из синхронизации, используя только youtube-dl, казалось, дал лучший результат, хотя он использует слишком ffmpeg.

Недостатком этого подхода является то, что вы не можете смотреть видео во время загрузки, ну, вы можете открыть еще один FF или Chrome, но кажется, что mplayer не может обрабатывать de video output, пока youtube-dl/ffmpeg не запущены.

Comments

    Ничего не найдено.