Capture várias câmeras em sincronia

1

Como posso capturar vários fluxos de webcam sincronizados? Eu tentei usar o FFMPEG, mapeando as saídas para arquivos diferentes na mesma linha de comando, mas isso resultou em dois vídeos não sincronizados, mesmo com diferentes comprimentos.

(Eu tropecei em uma pergunta semelhante com câmeras IP, mas as minhas não são overIP, então o atraso é causado por um motivo diferente.)

comando:

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
    
por Ido Kessler 26.10.2017 / 16:40

1 resposta

1

Então, depois de trabalhar com ele por alguns dias, encontrei uma solução: Aparentemente, ao usar -f dshow , isso aloca um buffer em tempo real. Enquanto esse buffer permite que você codifique o vídeo com resolução mais alta, isso interrompe a sincronização de vídeo em tempo real, porque eles estão sendo lidos de um buffer que não contém nenhum registro de data e hora.

Em vez disso, aloque um buffer menor em tempo real, o que forçará o ffmpeg a eliminar quadros se não estiver perto do tempo real.

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:\output1_1.mp4 -framerate 30 -map 1 -c:v libx264 -preset ultrafast -y C:\output2_1.mp4
    
por 29.10.2017 / 16:00