2012-07-17 128 views
3

我有两个网络摄像机在一个房间里拍摄很多视频文件对。由于带宽利用率,视频文件具有可变的帧速率。据我了解,如果我们在时间轴上标记的帧是这样的:如何以可变的帧速率同步两个视频?

variable frame rates

我想这两个视频同步。通过同步我的意思是填补空白,使得对于视频中的给定帧,在另一个视频中存在相应的帧。在我想最终两者有这样两个视频:

enter image description here

我曾经想过用转换工具,这两部影片转换为每秒25帧,虽然我会有他们将同步冗余帧对。不过,我有与所有视频的每个帧相关的信息,我将无法知道转换后的关联。

我想我需要以编程的方式做到这一点,以便我可以相应地保留与每一帧相关的信息。

到目前为止,我已经尝试OpenCV,VideoCapture财产CV_CAP_PROP_POS_MSEC给我的帧数,而不是帧的毫秒。即使它给了我正确的值,VideoWriter不支持可变帧频。 MATLAB拒绝阅读我的视频文件,因为它不支持编解码器,它是MJPEG(运动jpeg)。我已经能够使用Python中的pyglet来读取frame#和相应的毫秒。但它只是解码器,我还没有任何东西可以写入像“这是第#12帧这样的视频文件,这应该完全在视频的1.76秒”。

我正在寻找最简单的方法来实现这一点,语言,工具无关紧要。感谢您的Windows解决方案。非常感谢你的回答。

PS。我不介意输出格式,但我更喜欢无损格式。

回答

1

最简单的方法是将两者转换为相同的fps(比如25),然后将它们匹配。 ffmpeg是一个很好的工具。查看此博客文章的更多详细信息http://www.hdslr-cinema.com/news/workflow/convert-between-framerates/

但可能它会复制帧来覆盖空插槽。如果这不能满足您的要求,您应该考虑时间插值 - 在帧之间插入像素。但这是很多工作。 ffmpeg解决方案是一项5分钟的任务,插值可能意味着阅读和实施一些学术论文。

请注意,可能有一些专用的插值工具,但我不知道它们。这是值得调查的。

+0

我不介意插入我自己的,因为我告诉有像(#1,info1),(#2,info2)帧的相关信息,所以如果我使用工具转换他们两个,我不会知道如何匹配以前的关联和新的关联。我将检查ffmpeg库。 – nimcap 2012-07-18 08:59:13

相关问题