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

时间:2012-04-06 02:04:49

标签: video-processing video-encoding

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

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

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

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

关于如何优化视频的任何想法都不是那么大?

我希望这是提出这个问题的正确的stackexchange论坛。

2 个答案:

答案 0 :(得分:2)

将每秒帧数设置得非常低。如果可以,低于1fps。你的目标是尽可能接近两个关键帧(一个在关键帧,一个在最后)。

是否可以这样做取决于您使用的方案/编解码器,以及编码器。

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

lavc(libavcodec):

  

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

     

这是MPEG-4的推荐默认值。大多数编解码器需要常规关键帧以限制不匹配错误的累积。搜索也需要关键帧,因为搜索只能用于关键帧 - 但关键帧需要比其他帧更多的空间,因此这里较大的数字意味着文件略小但搜索精度较低。 0相当于1,这使得每一帧成为一个关键帧。建议不要使用值> 300,因为质量可能会很差,具体取决于解码器,编码器和运气。 MPEG-1/2通常使用值<= 30。

xvidenc:

  

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

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

答案 1 :(得分:0)

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

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

如果你真的需要一个更好的静态图像视频编码结果,你可以在开源视频编码器上进行攻击,从第2帧开始,将所有MB标记为“跳过”......