同步捕获多台摄像机

伊多·凯斯勒(Ido Kessler)

如何捕获多个同步的网络摄像头流?我尝试使用FFMPEG,在同一命令行中将输出映射到不同的文件,但这导致2个未同步的视频越来越少,甚至长度也不同。

(我偶然发现了与IP摄像机类似的问题,但是我的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
伊多·凯斯勒(Ido Kessler)

因此,在使用它几天后,我找到了一个解决方案:显然在使用时-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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章