有损解压是否总是产生相同的输出?

问题描述 投票:7回答:1

考虑到有损压缩格式(用于图像、音频、视频等),并考虑到它只对相同的压缩输入文件进行操作,那么相同的解压缩算法是否总是产生相同的输出呢? 而不同口味的解压缩器呢,它们是否会在相同的输入下产生相同的输出?我曾在某处看到,有些jpeg解压算法以质量换速度,也就是说,它们不会产生相同的输出。

所以总结一下,既然我们可以知道使用中的压缩和解压算法,那么我们是否可以依靠输出总是相同的。能否通过控制投入使用哪些算法来获得确定性行为呢?

请注意。不过不一定要输出原始输入。

compression mp3 jpeg h.264 aac
1个回答
8
投票

这取决于压缩标准。现代标准,如H.264,有严格的规范和参考解码器,任何符合标准的解码器在位臵上都应该输出与参考解码器完全相同的输出(当然是modulo bug)。旧的视频编解码器(如MPEG-4 Part 2)并没有那么详细地规定完整的过程,所以不同的实现可能会输出略有不同的数据(看起来大致相似,但在四舍五入上有细微的差别)。对于帧间编解码器,未来的帧依赖于早期的帧,这样的四舍五入错误虽然会累积起来。

对于音频编解码器来说,一个兼容的解码器大多需要接近参考信号,同时允许一些实现上的四舍五入差异。

在大多数情况下,以质量换速度是在编码器中完成的,但有些解码器也有偏离标准的选项,以提高解码速度,但不能输出完全正确的图像。

因此,这一切都归结于你所使用的编解码标准(它们是否写得足够精确,以允许独立的、位精确的实现)和实际的解码器实现。

© www.soinside.com 2019 - 2024. All rights reserved.