Как вы используете youtube-dl для загрузки прямых трансляций (которые идут в прямом эфире)?

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

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

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

Изображение

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


person user2824852    schedule 05.05.2016    source источник
comment
Streamlink, похоже, сейчас лучше обрабатывает прямые трансляции - просто добавьте это, потому что этот вопрос поднимается выше в результатах поиска.   -  person mijiturka    schedule 21.06.2018
comment
После обновления youtube-dl сегодня я заметил, что бесконечные прямые трансляции (например, уличные веб-камеры) теперь передаются в ffmpeg (как список воспроизведения), и загрузка, похоже, работает нормально. К сожалению, передача --external-downloader-args "-t 60" не ограничивает его 1 минутой, но нажатие Ctrl + C корректно завершает загрузку, и видеофайл не поврежден.   -  person Tomasz Gandor    schedule 06.08.2019


Ответы (5)


Я буду использовать это прямое вещание от NASA TV в качестве примера:

https://www.youtube.com/watch?v=21X5lGlDOfg

Сначала перечислите форматы видео:

youtube-dl --list-formats https://www.youtube.com/watch\?v\=21X5lGlDOfg

[youtube] 21X5lGlDOfg: Downloading webpage
[youtube] 21X5lGlDOfg: Downloading m3u8 information
[youtube] 21X5lGlDOfg: Downloading MPD manifest
[info] Available formats for 21X5lGlDOfg:
format code  extension  resolution note
91           mp4        256x144    HLS  197k , avc1.42c00b, 30.0fps, mp4a.40.5@ 48k
92           mp4        426x240    HLS  338k , avc1.4d4015, 30.0fps, mp4a.40.5@ 48k
93           mp4        640x360    HLS  829k , avc1.4d401e, 30.0fps, mp4a.40.2@128k
94           mp4        854x480    HLS 1380k , avc1.4d401f, 30.0fps, mp4a.40.2@128k
300          mp4        1280x720   3806k , avc1.4d4020, 60.0fps, mp4a.40.2 (best)

Выберите формат, который вы хотите загрузить, и получите URL-адрес HLS m3u8 видео из манифеста. В этом примере я буду использовать 94 mp4 854x480 HLS 1380k , avc1.4d401f, 30.0fps, mp4a.40.2@128k:

youtube-dl -f 94 -g https://www.youtube.com/watch\?v\=21X5lGlDOfg
https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1592099895/ei/1y_lXuLOEsnXyQWYs4GABw/ip/81.190.155.248/id/21X5lGlDOfg.3/itag/94/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D135/hls_chunk_host/r5---sn-h0auphxqp5-f5fs.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/8270/mh/N8/mm/44/mn/sn-h0auphxqp5-f5fs/ms/lva/mv/m/mvi/4/pl/16/dover/11/keepalive/yes/beids/9466586/mt/1592078245/disable_polymer/true/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRgIhAM2dGSece2shUTgS73Qa3KseLqnf85ca_9u7Laz7IDfSAiEAj8KHw_9xXVS_PV3ODLlwDD-xfN6rSOcLVNBpxKgkRLI%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIhAJCO6kSwn7PivqMW7sZaiYFvrultXl6Qmu9wppjCvImzAiA7vkub9JaanJPGjmB4qhLVpHJOb9fZyhMEeh1EUCd-3Q%3D%3D/playlist/index.m3u8

Обратите внимание, что ссылка может быть другой, и она содержит отметку времени истечения срока действия, в данном случае 1592099895 (около 6 часов).

Теперь, когда у вас есть список воспроизведения HLS, вы можете открыть этот URL-адрес в VLC и сохранить его с помощью записи или написать небольшую команду ffmpeg:

ffmpeg -i \
https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1592099895/ei/1y_lXuLOEsnXyQWYs4GABw/ip/81.190.155.248/id/21X5lGlDOfg.3/itag/94/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D135/hls_chunk_host/r5---sn-h0auphxqp5-f5fs.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/8270/mh/N8/mm/44/mn/sn-h0auphxqp5-f5fs/ms/lva/mv/m/mvi/4/pl/16/dover/11/keepalive/yes/beids/9466586/mt/1592078245/disable_polymer/true/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRgIhAM2dGSece2shUTgS73Qa3KseLqnf85ca_9u7Laz7IDfSAiEAj8KHw_9xXVS_PV3ODLlwDD-xfN6rSOcLVNBpxKgkRLI%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pl/lsig/AG3C_xAwRQIhAJCO6kSwn7PivqMW7sZaiYFvrultXl6Qmu9wppjCvImzAiA7vkub9JaanJPGjmB4qhLVpHJOb9fZyhMEeh1EUCd-3Q%3D%3D/playlist/index.m3u8 \
-c copy output.ts
person JAL    schedule 06.05.2016
comment
Если вы выбрали нужный формат, вместо копирования и вставки вы можете использовать '$ ()' (подстановка команды bash): ffmpeg -i $(youtube-dl -f 22 -g https://www.youtube.com/watch\?v\=6aXR-SL5L2o) -c copy omg1.ts - person fbehrens; 01.04.2017
comment
Возможно, вы захотите использовать здесь прямую трансляцию NASA TV в качестве примера, потому что она идет без перерыва в течение последних 19 месяцев, поэтому ссылка будет оставаться неизменной в течение длительного времени. - person Fabian Röling; 23.12.2018
comment
Что такое youtube_live_test? Благодарить - person mangovn; 25.06.2019
comment
@mangovn, это как раз тот каталог, в котором я находился. Отредактировал ответ для ясности. - person JAL; 25.06.2019
comment
к сожалению, не работает для потоков 3QV, например: konzertzuhaus.at/streaming-konzert / - person Gregor; 09.01.2021
comment
Я получаю ERROR: VUhQ6zEky0o: YouTube said: Invalid parameters. Моя команда была youtube-dl --list-formats https://www.youtube.com/watch?v=VUhQ6zEky0o. - person Gabriel Staples; 28.03.2021
comment
Вот мое решение: stackoverflow.com/a/66838396/4561887. - person Gabriel Staples; 28.03.2021
comment
^^ Есть идеи, как исправить эту ошибку в противном случае? ERROR: VUhQ6zEky0o: YouTube said: Invalid parameters. Я получаю отрицательные голоса за мой ответ, несмотря на то, что он работает, а ответ, получивший наибольшее количество голосов, - нет. Пример команды, в которой я вижу эту ошибку: youtube-dl --list-formats https://www.youtube.com/watch?v=VUhQ6zEky0o. - person Gabriel Staples; 28.04.2021
comment
Есть ли способ записать прямую трансляцию с самого начала? На веб-странице youtube можно поставить видео в очередь для воспроизведения с самого начала, но youtube-dl, похоже, начинает запись с текущего момента. - person gone; 18.05.2021

Нет необходимости передавать что-либо в 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 и вот он ...

Код ffmpeg:

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

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

Обратной стороной этого подхода является то, что вы не можете смотреть видео во время загрузки, вы можете открыть еще один FF или Chrome, но кажется, что mplayer не может обрабатывать видеовыход до тех пор, пока не будут запущены _13 _ / _ 14_.

person Andrés Cancer    schedule 22.04.2017
comment
На полпути во время прямой трансляции скопировал загружаемый файл .part и изменил формат на .mp4. Однако проигрыватель Windows Media сообщает, что формат файла не распознается. Какие-нибудь обходные пути? Или лучше всего запустить команду, когда прямая трансляция завершится? - person qwertynik; 28.01.2021
comment
@qwertynik Я считаю, что это зависит от того факта, что некоторые метаданные отсутствуют в файле MP4 из-за прерывания. Вы пытались открыть его с помощью VLC? Если вы действительно хотите использовать Windows Media Player, вы можете восстановить файл с помощью какого-либо инструмента (например, ffmpeg), и он также должен работать с WMP. - person Kubuntuer82; 29.04.2021
comment
Таким образом, вы не сможете скачивать прямые трансляции vp9. Увы. - person Валерий Заподовников; 22.05.2021

Некоторые веб-сайты с потоковой передачей m3u невозможно загрузить за один youtube-dl шаг, вы можете попробовать что-то вроде этого:

$ URL=https://www.arte.tv/fr/videos/078132-001-A/cosmos-une-odyssee-a-travers-l-univers/
$ youtube-dl -F $URL | grep m3u
HLS_XQ_2     m3u8       1280x720   VA-STA, Allemand 2200k 
HLS_XQ_1     m3u8       1280x720   VF-STF, Français 2200k 
$ CHOSEN_FORMAT=HLS_XQ_1
$ youtube-dl -F "$(youtube-dl -gf $CHOSEN_FORMAT)"
[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 "$(youtube-dl -gf $CHOSEN_FORMAT $URL)" -o "$(youtube-dl -f $CHOSEN_FORMAT --get-filename $URL)"
[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
....
person SebMa    schedule 29.08.2019
comment
Мне показалось, что лучше всего работает команда youtube-dl --hls-prefer-native your_m3u8_file_url.m3u8. Он загружает видео прямо в формат mp4. - person jeppoo1; 30.04.2021

Я написал небольшой скрипт для загрузки живого видео с YouTube, вы также можете использовать его как одну команду. скрипт его можно вызвать просто как,

~/ytdl_lv.sh <URL> <output file name>

e.g.

~/ytdl_lv.sh https://www.youtube.com/watch?v=nX0sg1Gp-1 myfile.mp4

сценарий так же прост, как показано ниже,

#!/bin/bash 

# ytdl_lv.sh
# Author Prashant
# 

URL=$1 
OUTNAME=$2
streamlink --hls-live-restart -o ${OUTNAME} ${URL} best

здесь лучшее качество потока, оно также может быть 144p (худшее), 240p, 360p, 480p, 720p (лучшее)

person Prashant Adlinge    schedule 14.05.2020

Как загрузить прямую трансляцию с YouTube (или любой другой потоковой службы, точка) (с помощью снимка экрана)

Этот вопрос является хитом №1 для Поиск в Google для linux скачать прямую трансляцию на YouTube, поэтому я отвечу здесь, даже если youtube-dl не работает для меня.

Мне действительно все равно, какой инструмент я использую. Я просто хочу, чтобы это работало.

youtube-dl не подходит для меня

Я попробовал ответить №1, но это не удалось. Пример ссылки на прямую трансляцию: https://www.youtube.com/watch?v=VUhQ6zEky0o. Моя попытка и сообщение об ошибке:

$ youtube-dl --list-formats https://www.youtube.com/watch?v=VUhQ6zEky0o
[youtube] VUhQ6zEky0o: Downloading webpage
[youtube] VUhQ6zEky0o: Downloading video info webpage
ERROR: VUhQ6zEky0o: YouTube said: Invalid parameters.

Опять же, вот ошибка сверху:

ОШИБКА: VUhQ6zEky0o: YouTube сказал: недопустимые параметры.

Я попробовал youtube-dl с несколькими ссылками на прямые трансляции, пока они были живы. Ни у кого из них это не сработало. Вместо этого я получил сообщение об ошибке выше.

OBS Studio отлично работает

(здесь приведены инструкции по общей установке и настройке OBS Studio, включая настройку источников видео и звука, а также запись экрана и запись звука)

Итак, я использовал OBS Studio, и он отлично работает! Вот как:

  1. Install it. It is cross-platform (Windows, Mac, and Linux), and very high quality and very well-supported, with excellent installation instructions. Go here for the installation links: https://obsproject.com/.
    1. It is also free and open source, and no-cost (NOT the same thing), both of which are awesome.
    2. Исходный код: https://github.com/obsproject/obs-studio
    3. Лицензия GPL v2.0: https://github.com/obsproject/obs-studio/blob/master/COPYING
    4. I'm on Linux Ubuntu 18.04 and 20.04, so I used the Ubuntu instructions here: https://obsproject.com/wiki/install-instructions#linux. At the time of this writing, they were:
      sudo apt install ffmpeg
      sudo apt install v4l2loopback-dkms
      sudo add-apt-repository ppa:obsproject/obs-studio
      sudo apt update
      sudo apt install obs-studio
      
  2. Затем я выполнил следующие инструкции Кезза Брейси от 25 июля 2020 года: https://photography.tutsplus.com/tutorials/obs-for-screen-recording-quick-start--cms-28549. Позвольте мне резюмировать их, а также добавить некоторые из моих собственных шагов, а именно:
  3. Открой это. При первом открытии он спросит, хотите ли вы оптимизировать для потоковой передачи или только для записи. Большинство людей захотят выбрать вариант только для записи. Если вы также ведете прямые трансляции для аудитории, выберите этот вариант.
  4. Теперь в нижней части главного окна OBS в разделе «Источники» вы увидите, что оно пусто. Щелкните значок +, чтобы добавить новый источник видео. Выберите «Захват экрана» (XSHM), как показано здесь (эти изображения заимствованы из приведенных выше инструкций Кезза Брейси):
     введите описание изображения здесь
    Нажмите" ОК ":
    < a href = "https://i.stack.imgur.com/UBrns.png" rel = "nofollow noreferrer"> введите здесь описание изображения
    Еще раз нажмите "ОК":
     введите описание изображения здесь
  5. В правом нижнем углу нажмите "Настройки":
     введите описание изображения здесь
    Щелкните" Вывод "на левой панели -› настройте или запишите свой путь записи (I хотел бы установить мое значение home/USERNAME/Videos/OBS) - ›при необходимости установите флажок« Создать имя файла без пробелов »(я делаю это) -› нажмите «ОК».
     введите описание изображения здесь
  6. Back to the main screen, at the bottom, under "Audio Mixer" section, you should see "Desktop Audio", which is any audio playing from inside your computer, and "Mic/Aux", which is any ambient audio being picked up by your computer's microphone or Aux jack. Normally, for making video tutorials and things, you'll want to leave both of these audio sources ON so you can talk through your video and explain what you're doing while you're doing it, and it will record sounds cleanly coming from the computer too via the "Desktop Audio" source.
    1. In the event you were listening to peaceful zen music coming out of your computer through headphones while you spoke, however, you'd want "Desktop Audio" OFF, so only you hear it, not the recording, or, in the event you are recording a YouTube or other livestream, you'd want "Mic/Aux" OFF so you don't add ambient noise to the recording--you only get the video audio instead.
    2. Итак, щелкните значок динамика, чтобы выключить аудиовход Mic / Aux, как показано здесь. Теперь на нем будет отображаться красный значок с X, указывающий, что он выключен:
      введите описание изображения здесь
  7. Нажмите кнопку «Начать запись» в правой части этой нижней панели. Теперь откройте свою прямую трансляцию на YouTube, сделайте ее полноэкранной и вуаля! Вы записываете его вживую с помощью захвата экрана для видео и захвата звука рабочего стола для аудио.
  8. Когда закончите, нажмите кнопку «Остановить запись» (где используется «Начать запись») или щелкните значок студии OBS в правом верхнем углу компьютера (по крайней мере, для Ubuntu) и выберите «Остановить запись»:
    введите  здесь описание изображения
  9. Перейдите к пути записи, который вы указали выше, и вуаля! Вот твоя видеозапись!
person Gabriel Staples    schedule 28.03.2021
comment
Здесь вы загружаете не поток, а то, что отображается на вашем экране. - person Joel G Mathew; 19.04.2021
comment
@JoelGMathew, согласен. Мой ответ не дает прямого ответа на конкретный вопрос. Скорее, он отвечает на вопрос, который задающий не знал, и на вопрос, который можно было бы задать, если принятый ответ не сработает. он помогает всем, для кого принятый ответ на этот вопрос не работает, в том числе и мне, и предоставляет универсальную альтернативу делать что-то похожее на то, что спрашивает, тем самым решая ту же проблему, но другим способом. - person Gabriel Staples; 20.04.2021
comment
@GabrielStaples Хотя предоставление альтернативного решения проблемы, скорее всего, приветствуется, утверждение, что вы отвечаете на вопрос, о котором спрашивающий не знал, невероятно сомнительно, если не сказать больше. Вы полностью игнорируете сам вопрос, в котором конкретно спрашивается, как использовать youtube-dl для его загрузки. Ваше решение приводит к записи с потерями и необходимости отображать видео на мониторе в течение всего времени записи, не говоря уже об установке другого программного обеспечения. Может быть решением для некоторых, но не отвечает на вопрос и вообще не является хорошим решением. - person Wheepy; 21.06.2021