2

Как я могу захватить несколько потоков веб-камеры синхронизированы? Я попытался использовать FFMPEG, отображая выходные данные в разные файлы в одной командной строке, но это привело к 2 несинхронизированным видео, тем не менее, даже с разной длиной.

(Я наткнулся на аналогичный вопрос с IP-камерами, но у меня не слишком много IP, поэтому задержка вызвана по другой причине.)

команда:

ffmpeg -f dshow -i video="@device_pnp_\\?\usb#vid_5986&pid_111c&mi_00#6&104790c2&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -f dshow -i video="@device_pnp_\\?\usb#vid_5986&pid_111c&mi_00#6&104790c2&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -map 0 -vcodec copy out2.mp4 -map 1 -vcodec copy out1.mp4

1 ответ1

2

Поэтому, поработав с ним несколько дней, я нашел решение: по-видимому, при использовании -f dshow это выделяет буфер в реальном времени. Хотя этот буфер позволяет вам кодировать видео с более высоким разрешением, это останавливает синхронизацию видео в реальном времени, потому что они читаются из буфера, который не содержит метки времени.

Вместо этого, выделите меньший буфер в реальном времени, который заставит ffmpeg отбрасывать кадры, если он не близок к реальному времени.

ffmpeg -f dshow -rtbufsize 1M -r 30 -i video="@device_pnp_\\?\usb#vid_045e&pid_075d&mi_00#6&eb52b6a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -f dshow -rtbufsize 1M -r 30 -i video="@device_pnp_\\?\usb#vid_045e&pid_075d&mi_00#8&46f2efb&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -framerate 30 -map 0 -c:v libx264 -preset ultrafast -y C:\1\output1_1.mp4 -framerate 30 -map 1 -c:v libx264 -preset ultrafast -y C:\1\output2_1.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .