1

我有一堆 .png 帧和一个 .mp3 音频文件,我想将它们转换成视频。不幸的是,这些帧并不对应于恒定的帧速率。例如,一帧可能需要显示 1 秒,而另一帧可能需要显示 3 秒。

是否有任何开源软件(例如 ffmpeg)可以帮助我完成此任务?任何反馈将不胜感激。

非常感谢!

4

1 回答 1

0

这不是一个优雅的解决方案,但它可以解决问题:根据需要复制帧,以便最终获得一些(相当高的)恒定帧速率,30 或 60 fps(如果您需要更高的时间分辨率,则更高)。您只需将在最近的新帧处复制的帧更改为您想要的确切时间戳。精确重复的帧将使用任何合适的编解码器被编码为很小的尺寸(几个字节),所以这是相当紧凑的。然后像往常一样用 ffmpeg 编码。

如果您有很多这些并且需要以“正确”的方式进行操作:您可以在容器(例如 mp4、mkv 等)或编解码器中指示时间。例如,在 H.264 流中,您必须插入 pic_timing 类型的 SEI 消息来指定每个帧的时间。或者,您将不得不编写自己的复用器,依赖于Matroska (mkv) 或GPAC (mp4) 等容器库来指示容器中的时间。请注意,并非所有编解码器/容器都支持任意可变帧速率。只有少数编解码器支持编解码器中的时序。此外,如果在容器和编解码器中都指定了时序,则使用容器时序(但如果您将流复用到容器中,复用器应该从编解码器中获取各个帧时间戳)。

于 2012-11-25T05:31:06.870 回答