如何检测文件是否使用 mp3PRO 编码?

How to detect if a file is encoded using mp3PRO?

我有一个包含很多 MP3 文件的文件夹,其中一些是使用 mp3PRO 编码的。

由于这种格式现已过时,我想将它们转换回 MP3(很容易找到转换器)。

有没有办法以编程方式检测文件是否使用 mp3PRO 格式编码?(例如:通过使用十六进制编辑器查看文件头或特定签名)

official player 能够检测文件是否使用 mp3PRO 编码(标志是否突出显示)所以我认为这在技术上是可行的。

到目前为止,我发现 mp3PRO 文件的比特率似乎很低(非编码文件的 50%):例如:128 kbps 的文件将显示为 64kbps。然而,一个 320 kbps 的文件将显示为 160 kpbs(这很常见),因此它不能作为规则使用。

以下是我发现的问题以及我是如何修复它的。我写在这里以防有人需要它:

MP3Pro 文件在 mp3 header 中不包含任何有助于识别它们的特殊标志。

它们在技术上与普通的 mp3 文件非常相似,只是它们的比特和采样率只有一半(例如:128kpbs 44100hz 文件将被编码为 64kps 22050hz 文件,导致 mp3pro 文件的大小约为一半原始文件)。

这是为了兼容性而制作的,因此默认播放器无需任何更改即可播放。

它们还包含一些 SBR 数据,允许综合重建丢失的音频部分(高频)并播放它们,就像在 mp3 pro 转换之前一样。

即使不是不可能,检测 SBR 数据似乎也非常困难:它需要解码实际的 mp3 帧。也没有找到关于 mp3pro 格式的文档。

我所做的(有效但需要一些手动操作):我将所有要检查的文件添加到 mp3 播放器(在我的例子中是 foobar 2000)的播放列表中,然后对示例中的文件进行排序速率列:大多数 22050 hz mp3 文件确实是 mp3 pro 文件。

使用 winamp + 为它制作的 mp3pro 插件将它们转换回 mp3,可在此处获取:http://www.wav-mp3.com/mp3pro-to-mp3.htm