FFMPEG мозаичные заикания
РЕДАКТИРОВАТЬ: Внезапно, с теми же сценариями на том же оборудовании, проблема исчезла. Мне по-прежнему любопытно узнать причину, но пока я не смогу воспроизвести ее снова, есть несколько вариантов диагностики. Мои извенения.
Я использую FFMPEG, чтобы получать прямые трансляции с нескольких веб-камер. Когда каналы независимы (другими словами, каждый v4l2
вход проходит через свой собственный конвейер внутри filter_complex
собственного xv
выхода), все работает очень хорошо: задержка составляет около полсекунды, с которой я могу жить, и все видео работают плавно ,
Я бы предпочел объединить эти видео в мозаику, как для просмотра в прямом эфире, так и для копии, которую он сохраняет на диск. Но когда я пытаюсь сделать это, либо с серией overlay
s или с hstack
+ vstack
, видео начинает заикаться: один канал будет работать ровно в течение нескольких секунд, в то время как другие все еще будут, тогда другой будет работать в течение нескольких секунд, пока первый замерзнет., и так далее. Видео все еще идет в квази-реальном времени, поэтому оно не страшно в целях безопасности, но очень затрудняет отслеживание движения.
Что я могу сделать, чтобы это исправить или хотя бы уменьшить заикание? Я был бы в порядке с более низкой частотой кадров, если она была последовательной.
Скрипт, который работает:
ffmpeg \ -f lavfi -thread_queue_size 1024 -i color=s=$:c=000000 \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_ne \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_sw \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_se \ -f alsa -thread_queue_size 1024 -i $audio1 \ -f alsa -thread_queue_size 1024 -i $audio2 \ -filter_complex " [0:v] fifo, setpts=PTS-STARTPTS [v0]; [1:v] fifo, setpts=PTS-STARTPTS [v1]; [2:v] fifo, setpts=PTS-STARTPTS [v2]; [3:v] fifo, setpts=PTS-STARTPTS [v3]" \ -map "[v0]" -f xv - \ -map "[v1]" -f xv - \ -map "[v2]" -f xv - \ -map "[v3]" -f xv -
Скрипт, который не:
ffmpeg \ -f lavfi -thread_queue_size 1024 -i color=s=$:c=000000 \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_ne \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_sw \ -f v4l2 -thread_queue_size 1024 -video_size $size -i $video_se \ -f alsa -thread_queue_size 1024 -i $audio1 \ -f alsa -thread_queue_size 1024 -i $audio2 \ -filter_complex " [0:v] fifo, setpts=PTS-STARTPTS [v0]; [1:v] fifo, setpts=PTS-STARTPTS [v1]; [2:v] fifo, setpts=PTS-STARTPTS [v2]; [3:v] fifo, setpts=PTS-STARTPTS [v3]; [v0][v1] hstack [tmp1]; [v2][v3] hstack [tmp2]; [tmp1][tmp2] vstack [vout]" -map "[vout]" -f sdl2 -
(Я сейчас использую только три видео, так как у меня четыре ядра процессора.)
0 ответов на вопрос
Похожие вопросы
-
3
Windows Media Center (Vista): дополнение или программное обеспечение для обрезки телевизионных запис...
-
3
Обработка видео с картами ATI
-
1
Видео скайп на Aspire One
-
-
1
VirtualDub для Linux
-
2
Какое использование диска используют видео в формате RAW?
-
1
Приложения Java в браузере вспыхивают / рвутся при прокрутке - почему это так?
-
3
Воспроизведение видео рипов с помощью Windows Media Center
-
5
Как лучше всего смотреть интернет-фильмы (Hulu и т. Д.) На моем телевизоре?
-
4
Вставить Flash видео в документ MS Word (2003 или 2007)
-
2
Ищете недорогую систему домашнего наблюдения