MP3 解码差异

信息处理 声音的 预处理 mp3
2022-01-17 00:56:55

两个不同的解码器是否可以为同一个 MP3 输出两个不同的样本结果?我在 Matlab 上解码一个 mp3,它产生两列(大概每个通道一个)。当我使用 AVAssetReader (iOS) 从同一个文件中提取样本数据时,我得到了不同的结果。当我用 WAV 文件尝试相同的代码时,两个结果匹配,所以我猜代码很好(尽管 Matlab 结果有一些额外的空白帧)。

如果我不科学地从我的 AVAssetReader MP3 结果中选择随机值,并在 Matlab 结果中搜索它们,它们往往存在,但并不总是存在。我不知道这是否只是巧合,不同的四舍五入错误,或者它们是否真正匹配。问题是,当它们匹配时,周围的数字彼此不同。例如,0.0021出现在两个结果中,但在 Matlab 上的周围数字是 -0.0649,0.0147 等。(在 AVAssetReader 结果中不会出现在 0.0021 附近)。

什么可能导致这种差异,它是否会导致我的应用程序严重缺乏完整性,我将如何解决它?谢谢你。

1个回答

两个解码器可能会产生不同的结果并符合标准。标准“ISO/IEC 11172-4(第 4 部分)一致性测试”指定了两类解码器:“准确”和“有限准确度”*)。

通过比较解码流和参考流来测量精度(参考输入和输出在标准中指定)。如果差异的 RMS 低于,则解码器被归类为准确,如果低于,则被归类为“有限精度”解码器。215/12211/12

因此,如果您要在不同的处理器架构上使用不同的解码器甚至相同的解码器,您必须为这种输出差异做好准备。不知道您的应用程序或打算,但也许您可以模仿标准并使用 RMS 误差?

*) 我面前没有英文标准文本,因此标准中使用的实际名称可能不同。