我正在做视频处理任务,我需要解决的问题之一是为整个视频中只有一个静态图像的视频选择适当的编码算法。
目前我尝试了几种算法,例如DivX和XviD,但它们为1分钟长的视频生成3MB视频。音频是64kbit/s的mp3,所以音频只需要480KB。所以视频是2.5MB的!
由于视频中的图像没有变化,因此它可以真正有效地压缩,因为没有运动。图像本身的大小(它是一个jpg)只有50KB。
所以理想情况下,我希望这个视频大约是550KB - 600KB,而不是3MB。
关于如何优化视频,让它不那么大,你有什么想法吗?
我希望这是提出这个问题的正确的stackexchange论坛。
发布于 2012-04-06 11:33:59
将每秒帧数设置为非常低。如果可以,请低于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-06 10:20:54
我认为这个问题与视频编码器的实现有关,而不是视频编码标准本身。
实际上,大多数视频编码器的实现并不是针对静态图像的视频而设计的,因此当输入静态图像的视频时,它不会产生我们想象中的完美码流。大多数视频编码器实现都是为处理“自然”视频而设计的。
如果你真的需要一个更好的静态图像视频的编码效果,你可以在一个开源的视频编码器上做一个hack,从第二帧开始,将所有的MB标记为“跳过”…
https://stackoverflow.com/questions/10038340
复制相似问题