对于只有一个静态图像和声音的视频,我应该使用哪种视频编码算法



我正在执行视频处理任务,我需要解决的问题之一是为整个视频中只有一个静态图像的视频选择合适的编码算法。

目前,我尝试了几种算法,如DivX和XviD,但它们为1分钟长的视频生成了3MB的视频。音频是64kbit/s mp3,所以音频只需要480KB。所以视频是2.5MB!

由于视频中的图像没有变化,因此可以非常有效地压缩,因为没有运动。图像大小本身(它是jpg)只有50KB。

所以理想情况下,我希望这个视频大约是550KB-600KB,而不是3MB。

关于如何优化视频,使其不那么庞大,有什么想法吗?

我希望这是问这个问题的合适的堆叠交换论坛。

将每秒帧数设置为非常低。如果可以的话,低于1fps。您的目标是尽可能接近两个关键帧(一个在开始,一个在结束)。

能否做到这一点取决于您使用的方案/编解码器,以及编码器。

许多编解码器都有与关键帧相关的选项。例如,这里有一些开源编码器:

lavc(libavcodec):

keyint=<0-300>-帧中关键帧之间的最大间隔(默认值:250或25fps电影中每十秒一个关键帧。

这是MPEG-4的推荐默认值)。大多数编解码器需要规则的关键帧来限制失配误差的累积。搜索也需要关键帧,因为搜索只能针对关键帧,但关键帧比其他帧需要更多的空间,因此这里的较大数字意味着文件稍小,但搜索精度较低。0相当于1,使每一帧都成为关键帧。值>300是不推荐的,因为质量可能取决于解码器、编码器和运气。MPEG-1/2通常使用值<30.

xvidenc:

max_key_interval=-关键帧之间的最大间隔(默认值:10*fps)

有趣的是,这种解决方案可能会降低在文件中查找的能力,因此您需要对此进行测试。

我认为这个问题与视频编码器的实现有关,而不是视频编码标准本身。

实际上,大多数视频编码器的实现并不是为静态图像的视频而设计的,因此当输入静态图像的图像时,它不会产生我们想象的完美的比特流。大多数视频编码器实现都是为处理"自然"视频而设计的。

如果你真的需要更好的静态图像视频编码结果,你可以对开源视频编码器进行破解,从第二帧开始,将所有MB标记为"跳过"。。。

相关内容

最新更新