3

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

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

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

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

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

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

4

2 回答 2

2

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

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

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

lavc (libavcodec):

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

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

xvidenc:

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

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

于 2012-04-06T03:33:58.970 回答
0

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

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

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

于 2012-04-06T02:20:53.887 回答