Опции для транскодирования в реальном времени потоков 1080p из файла на beaglebone black

У меня есть несколько потоков видео 1080p. Я хотел иметь возможность транслировать любой из этих потоков в браузер. Это требует, чтобы я транскодировал в меньшее разрешение и в формат flv или ogg/webm. Я попробовал это с помощью vlc на бигле чёрной кости со следующей командной строкой.

cvlc 00080.MTS --sout "#transcode{vcodec=FLV1,acodec=mp3,vb=200,deinterlace,ab=32,width=720,height=480}:std{access=http,mux=ffmpeg{mux=flv},dst=/stream.flv,caching=3000}"

Это дает мне следующую ошибку

[h264 @ 0xb547c3e0] reference picture missing during reorder
[h264 @ 0xb547c3e0] Missing reference picture

Я считаю, что это потому, что процессор слишком медленный и не способен обрабатывать 1080p. Потому что я попробовал то же самое с видео 480p, и я не получаю такой ошибки.

У меня вопрос - есть ли другой способ, которым я могу транскодировать с меньшим разрешением на лету, чтобы его можно было либо транслировать, либо просматривать через видео HTML5. Я попытался предварительно транскодировать все потоки, но мне потребовалось 4 дня, и он все еще не завершил перекодирование всех видео, которые у меня были:), так что это может быть не вариант. Спасибо заранее за ваше время.

1 ответ

Чтобы использовать проигрыватель html5, вы можете выбрать только ogg и webm (или mp4, но это не поддерживается vlc)

Стрим на WEBM

cvlc \
v4l2:///dev/video0 \
--sout '#transcode{vcodec=VP80,vb=1000}:std{access=http{mime=video/webm},mux=webm,dst=:8080/cam1}' \
-vvv

Заметки:

180% - 250% загрузка ЦП (в 4core / 8-поточном i7-4770)

Стрим в OGG

cvlc \
v4l2:///dev/video0 \
--sout '#transcode{vcodec=theo,vb=2000}:std{access=http{mime=video/ogg},mux=ogg,dst=:8080/cam1}' \
-vvv

Заметки

  • 30% загрузка процессора
  • Качество хуже чем у webm (даже если битрейт 2xWebM)
Другие вопросы по тегам