Использование FFMPEG для потоковой передачи видео с моей веб-камеры на YouTube

Я пытался использовать ffmpeg для потоковой передачи видео с моей веб-камеры на YouTube, и пока все, что мне удалось, это «подтверждение» от YouTube с надписью «Начало» зеленым цветом. Однако он быстро становится серым, и фактический поток никогда не меняется в автономном режиме.

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

ffmpeg -rtbufsize 1500M -r 25 -f dshow -s 1280x720 -i video="USB2.0 HD UVC WebCam" -vcodec h264 -b:a 600k -acodec libfaac -ab 128k -f flv "rtmp://a.rtmp.youtube.com/live2/user.useruser.codecodecode"

CMD

Мне удалось транслировать видео на YouTube с помощью ffmpeg, просто камера не работает. Любая идея, что я могу делать неправильно?

Это команда, которую я сейчас использую ffmpeg -r 18 -f dshow -s 1280x720 -i video="USB2.0 HD UVC WebCam":audio="Microphone (Realtek High Definition Audio)" -vcodec h264 -b:v 1800k -acodec aac -strict experimental -f flv "rtmp://a.rtmp.youtube.com/live2/useruser.useruser.codecodecodecode"

Теперь я использую -acodec aac вместо libfaac или libfdk_aac, так как получаю ошибки «Неизвестный кодировщик».

Однако он транслируется несколько секунд, и теперь я получаю следующие ошибки: WriteN, ошибка отправки RTMP 10053< /а>

Любая идея, что они означают, или как их исправить?


person Indes    schedule 13.11.2015    source источник


Ответы (3)


В вашей команде есть несколько ошибок:

  • У вас нет аудиопотока. При использовании dshow вам также необходимо указать audio, как описано здесь.

    ffmpeg -f dshow -i video="Integrated Camera":audio="Microphone name here"

    Если вы не собираетесь записывать звук, поставьте тихую звуковую дорожку.

  • #P4# #P5#
    #P6# #P7#
    #P8#
  • Что касается звука, который вы используете libfaac. Для достижения наилучших результатов при кодировании AAC рекомендуется использовать libfdk_aac

person aergistal    schedule 13.11.2015
comment
Спасибо, это очень помогло, но теперь я получаю сообщение об ошибке «Ошибка отправки RTMP 10053» сразу после начала потоковой передачи. Любая идея, что это такое? (Я обновил свой пост скриншотом того, что происходит) - person Indes; 13.11.2015
comment
У меня такая проблема, чтобы... - person lulas; 14.11.2015
comment
Это может означать, что поток был задержан до сброса. Я вижу низкий fps на ваших скриншотах. Ваш компьютер справляется с этой задачей? - person aergistal; 15.11.2015
comment
Если вы не собираетесь записывать звук, поместите звуковую дорожку без звука --› можете объяснить, почему? - person Gyan; 15.03.2016
comment
@Mulvya Когда я писал этот ответ, точка приема YouTube Live ожидала аудиопотока. И, во-вторых, при отсутствии аудиопотока воспроизведение на устройствах Apple может завершиться ошибкой при использовании HLS, поскольку они ожидают мультиплексирования видео и аудио (в более старых версиях протокола). См. stackoverflow. ком/вопросы/33328829/ - person aergistal; 16.03.2016
comment
@aergistal У меня та же проблема, просто я загружаю видео на Youtube, сделанное с помощью javacv. Ютуб не обрабатывает. Какие аудио- и видеокодеки вы в конечном итоге использовали, чтобы заставить его работать? - person Para; 14.04.2018

Если у вас есть веб-камера с IP-адресом с источником видео в формате Full HD x264, без звука, и вы хотите транслировать прямую трансляцию экрана камеры на YouTube, вам не нужно всегда перекодировать/перекодировать видео в более низкое разрешение. YouTube может принимать прямой видеопоток с некоторых камер. Единственное, что вы должны сделать, это добавить дополнительную пустую/тихую звуковую дорожку. Если у вас достаточно пропускной способности в вашей сети, это должно работать.

Я использую эту команду CLI на Pine64+ с Ubuntu 16.04, и она работает:

ffmpeg -re -rtsp_transport tcp -i "rtsp://<user>:<pass>@<camera_ip>:<port>" /
       -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 /
       -c:a libmp3lame -ab 128k -ar 44100 /
       -c:v copy -threads 2 -bufsize 512k /
       -f flv "rtmp://a.rtmp.youtube.com/live2/<your-live-stream-key>"

(Вот некоторая информация о виртуальном устройстве ввода Libavfilter: https://www.ffmpeg.org/ffmpeg-devices.html#lavfi)

Благодаря этому вы можете перенаправить прямое изображение экрана камеры с беззвучным звуком на YouTube с минимальной загрузкой процессора.

Некоторые ограничения:

  1. Когда ваша сеть не работает (например, ваш интернет-провайдер обновляет сеть, изменяет ваш общедоступный IP-адрес или ваш маршрутизатор перезагружается), ffmpeg теряет сигнал (веб-камера и/или YouTube RTSP).
  2. Как я видел, иногда YouTube перестает принимать поток и конвертирует последние данные в видеофайл (архивирует потоковое видео), после чего создает новый идентификатор для прямого эфира. Это влияет на работу ffmpeg (потеря соединения RTSP) и влияет на вашу веб-страницу, на которую вы вставили код прямой трансляции YouTube. (Как я обнаружил, YouTube обрабатывает максимум 12 часов видео только одним фрагментом).

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

  • Каким-то образом вам нужно обнаружить сетевые ошибки.
  • Каким-то образом вам нужно определить, когда YouTube перестанет слушать RTSP.
  • Каким-то образом вам нужно определить, потерял ли ffmpeg связь с камерой.
  • И, наконец, как-то нужно перезапустить ffmpeg, когда все службы снова заработают.

Временно я использую небольшую работу cron, которая перезапускает ffmpeg каждые часы.

person William    schedule 12.03.2017

Прямая трансляция IP-камеры на Youtube с использованием FFmpeg. - Для пользователей Ubuntu (что я сделал)

  1. Установите последнюю версию ffmpeg на Ubuntu 12.04 или 14.04 https://gist.github.com/xdamman/e4f713c8cd1a389a5917 а также

  2. Скомпилируйте FFmpeg в Ubuntu https://gist.github.com/faleev/3435377

  3. Откройте Ютуб. Авторизоваться. Нажмите «Мой канал» > «Менеджер видео» > «Прямая трансляция». Обратите внимание на «Имя/ключ потока».

  4. Для статического видеофайла:

    ffmpeg -re -i "(input-file)"  -acodec libmp3lame  -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/(Stream name/key)"
    
  5. Для потоковой передачи видео с IP-камеры с выводом только видео rtsp:

    ffmpeg -re -i input-file  -rtsp_transport tcp -i "rtsp://password@(streamaddress with local IP)"  -acodec libmp3lame  -ar 44100 -b:a 128k -pix_fmt yuv420p -profile:v baseline -s 426x240 -bufsize 2048k -vb 400k -maxrate 800k -deinterlace -vcodec libx264 -preset medium -g 30 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/(Stream name/key)"
    
person Brijesh Verma    schedule 15.03.2016
comment
В пункте 5 вывод видео+аудио. Как транслировать только видео (без звука) с IP-камеры на YouTube? Я пытался использовать параметр -an, но видео не отображалось на YouTube, хотя ffmpeg все еще работает. - person arsenalist; 14.09.2016