Использование 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 send error 10053



Есть идеи, что они означают, или как их исправить?
2127   3  

3 ответов:

Есть несколько вещей, неправильных с вашей командой:

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

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

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

  • -b:a это то же самое, что -ab - скорость передачи звука. Вы должны использовать -b:v для указания битрейта видео. 600k слишком низкий для видео 1280х720px @ 25fps H.264 поток.

    YouTube рекомендует :

    720p

    Диапазон Битрейта Видео: 1500-4000 Кбит / С

    Вы должны поставить хотя бы 1800k.

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

Прямая трансляция 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. Откройте Youtube. Авторизоваться. Нажмите на мой канал > Менеджер видео > прямая трансляция . Примечание "имя потока/ключ".

  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 video only:

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

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

Я использую эту команду 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 потеряет сигнал (webcamera и/или YouTube RTSP).
  2. как я видел, иногда YouTube прекращает прием потока и преобразует последние данные в видеофайл (архив потокового видео), а после этого создает новый идентификатор для прямого эфира. Это влияет на работу ffmpeg (RTSP соединение потеряно)и влияет на вашу веб-страницу, где вы вставили код YouTube live stream. (Как я обнаружил, YouTube обрабатывает максимум 12 часов видео только в одном месте).

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

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

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

Comments

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