Как вы используете youtube-dl для загрузки живых потоков (которые являются живыми)?
Просто интересно, возможно ли это или нет - когда я копирую URL-адрес видео в YouTube-dl он выплевывает
[https @ 0x7fc351416080] inflate return value: -3, incorrect header check
Last message repeated 15 times
После этого он выплевывает пару строк красного текста, который, похоже, не хочет копироваться должным образом, поэтому я взял фрагмент

Кто-нибудь знает, если это возможно?
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