![为什么解码后的 MP3 编码成的 FLAC 比 MP3 更大?](https://linux22.com/image/1220380/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A7%A3%E7%A0%81%E5%90%8E%E7%9A%84%20MP3%20%E7%BC%96%E7%A0%81%E6%88%90%E7%9A%84%20FLAC%20%E6%AF%94%20MP3%20%E6%9B%B4%E5%A4%A7%EF%BC%9F.png)
为了比标题更准确,假设我有一个 320 kbps 的 MP3 文件。如果我解压缩它,那么从逻辑上讲,除了每秒音频中大约 320 千比特之外的所有数据都应该是冗余数据,可以压缩掉。那么,当我将解压缩的文件编码为 FLAC 或任何其他无损编解码器时,为什么它会大得多?
相关地,从理论上讲,是否有可能从解压缩的 wav 中无损恢复源 mp3 音频?(我知道 mp3 本身是有损的。我问的是,是否有可能在没有任何更远损失。)
编辑:让我澄清一下相关问题及其背后的原因。假设我有一个从 MP3 文件解压缩的 wav(并且假设由于某种原因我没有 mp3 本身)。如果我不想再损失质量,我可以用 FLAC 或任何其他无损编码器重新编码它并获得更大的文件以保持相同的质量。或者,我可以再次将其重新编码为 mp3 并获得与原始文件相同的大小,但会丢失更多数据。显然,这两种情况都不理想。我既可以保留原始大小,也可以保留原始质量,但不能同时保留两者(我指的是原始 mp3 的质量,而不是原始无损源的质量)。我的问题是:我们能同时获得两者吗?从理论上讲,是否有可能从有损解压数据中恢复有损压缩数据,而不会丢失更多数据?
如果可能的话,我可以想象一种无损压缩算法,它使用 FLAC 压缩音频。然后它还会扫描音频以查找任何先前的有损压缩迹象,如果检测到,则将其无损地重新压缩为原始有损文件。然后它保留较小的文件。
答案1
对于相同的数据,FLAC 比 MP3 更大,原因是它们的编码方式不同。:) MP3 仅对感知信息进行编码,而 FLAC 则以更紧凑的格式存储每一个数据点。
- 将 WAV 转换为 FLAC 就像将 BMP 转换为 PNG 一样。
- 完全相同的像素,但像 ZIP 文件一样无损压缩为更小的尺寸。
- 将 WAV 转换为 MP3 就像将 BMP 转换为 JPEG 一样。
- 它并不存储确切的像素,而是存储生成带有彩色波纹的方块看起来有点像原版。
类似地,MP3 只存储生成波纹的指令,这些波纹加在一起听起来就像原始信号。但真实信号和生成信号(误差信号)之间的差异包括随机噪声伪像,例如JPEG 锯齿。当您将其存储在 FLAC 等完美主义格式中时,它需要存储所有这些锯齿,而随机噪声更难无损压缩,因此它会增加文件的大小。(真正的随机噪声是不可压缩的。当您无损压缩文件时,您会消除冗余的重复模式,使其看起来更像随机噪声。)
我敢打赌,如果将 JPEG 转换为 PNG,您会看到与将 MP3 转换为 FLAC 时相同的尺寸增加,因为完美主义无损编解码器需要记住原始 bmp 中不存在的每一个小锯齿和伪影。
这个类比并不完美,因为音频更像是一张照片而不是线条图,但它有助于传达这个想法:
原始 BMP 大小:29 kB
PNG 大小:629 B
JPEG 大小:1.7 kB
从 JPEG 创建的 PNG:6.2 kB
答案2
当您解码 MP3 时,无论比特率是多少,您都会获得标准的 1411kbps/44100Hz 16bit(或任何源)PCM 音频,它具有有损编码过程的所有明显和不明显的效果,此格式是播放和编码/重新编码所必需的,当您在计算机、MP3 播放器等上播放任何编解码器的任何文件时,都会被解压缩。
FLAC 编码器并不关心它压缩的音频是来自解码的 MP3 还是全新的 CD,它只会减小源文件的大小而不会对音频数据进行任何更改,从而可以完全恢复源,这是一个无损过程。
由 MP3 制作的 FLAC 文件听起来与 MP3 完全一样,由 CD 音轨制作的 FLAC 文件听起来与 CD 完全一样。
答案3
回答第二部分,如果你从 MP3 转换回 WAV,然后选择一个无损编码器,你应该完成后将获得相同质量的文件。
至于为什么 FLAC 比 MP3 更大,这是因为您采用一种压缩程度更高的格式,对其进行解压缩,然后使用效率较低的压缩工具重新压缩它(但播放质量更高)。
这有点像问为什么将 JPG 转换为 PNG 会使其变大 - 你正在 [部分] 解压缩文件,然后以无损方式重新压缩。FLAC 与 PNG 一样,并未针对空间, 但对于质量。
答案4
mp3 需要解码器才能播放,解码器的结果是原始曲目(通常来自 CD)的近似值,因此解码器会添加数据以使其可播放(这不是无意义的数据)。得到的近似值与原始曲目的比特率相同。如果不解码 mp3,则信息毫无意义,因此无法转换为其他任何内容(除非编码非常相似,例如立体声 mp3 到 2X 单声道 mp3)。而 FLAC 和 mp3 甚至不相似。解码 FLAC 时,结果不是编码到 FLAC 中的原始数据的近似值,但完全相同。