compression - 有损解压总是产生相同的输出吗?

标签 compression mp3 jpeg h.264 aac

考虑到有损压缩格式(用于图像、音频、视频等...)并考虑到它只对相同的压缩输入文件进行操作,相同的解压缩算法是否总是生成相同的输出?
那么不同风格的解压器呢,它们是否使用相同的输入生成相同的输出?我在某处读到过一些 jpeg 解压缩算法以质量换取速度,这意味着它们不会产生相同的输出。

总而言之,鉴于我们可以知道正在使用的压缩和解压缩算法,我们是否能够依赖输出始终相同。可以通过控制使用哪些算法来获得确定性行为吗?

笔记。不过,它不一定必须输出原始输入。

最佳答案

这取决于压缩标准。现代标准,例如 H.264,有严格的规范和引用解码器,任何兼容的解码器都应该按位输出与引用解码器完全相同的输出(当然是模错误)。较旧的视频编解码器(例如 MPEG-4 第 2 部分)没有详细说明完整的过程,因此不同的实现可能会输出略有不同的数据(看起来大致相似,但舍入略有不同)。对于帧间编解码器, future 的帧依赖于更早的帧,但这种舍入误差可能会累积。

对于音频编解码器,兼容解码器通常需要接近引用信号,同时允许一些实现/舍入差异。

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

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

关于compression - 有损解压总是产生相同的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25303201/

相关文章:

Javascript - 用于数据库条目的 lzw 压缩的替代方案

c - C 语言无损数据压缩,无需动态内存分配

bash - 使用 ffmpeg 批量降低 mp3 音频文件的比特率和大小

java - 使用记事本在java中播放.mp3文件

PHP 回显 jpeg 图像失败,但将相同的图像写入文件效果很好。为什么?

linux - linux Imagemagick 将 PDF 转换为 JPG 的问题

c++ - 如何将单个位写入bin文件

Node .js : fluent-ffmpeg throws error when converting mp4 to mp3

java - 如何在java中使jpeg无损?

用于低网络带宽使用的压缩 Java 自定义序列化