3

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

可变帧率

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

在此处输入图像描述

我曾考虑使用转换器工具将两个视频都转换为 25 fps,尽管我将有冗余帧对,它们将被同步。但是,我有与所有视频的每一帧关联的信息,转换后我将无法知道关联。

我认为我需要以编程方式执行此操作,以便我可以相应地保持与每个帧相关联的信息。

到目前为止,我已经尝试过 OpenCV,VideoCapture属性CV_CAP_PROP_POS_MSEC给了我帧号,而不是帧的毫秒数。即使它给了我正确的值,VideoWriter也不支持可变帧速率。MATLAB 拒绝读取我的视频文件,因为它不支持编解码器,即 MJPEG (motion jpeg)。我已经能够在 Python 中使用pyglet读取帧 # 和相应的毫秒数。但它只是解码器,我仍然没有任何内容可写入视频文件,例如“这是第 12 帧,这应该正好是视频的 1.76 秒”。

我正在寻找最简单的方法来实现这一点,语言,工具都没有关系。赞赏基于 Windows 的解决方案。非常感谢您的回答。

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

4

1 回答 1

1

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

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

请注意,可能有一些专门的插值工具,但我不知道它们。值得研究。

于 2012-07-18T08:27:58.693 回答