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

标签 audio hex mp3 file-format

我有一个包含大量 MP3 文件的文件夹,其中一些是使用 mp3PRO 编码的.

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

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

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

到目前为止,我发现 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

关于audio - 如何检测文件是否使用 mp3PRO 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618480/

相关文章:

audio - waveInXXX是否应用低通滤波器?

python - 从树莓派上的 ADC 芯片读取原始音频值

java - 尝试创建一种在 Android Java 中格式化十六进制字符串的方法

ruby - 打印与特定十六进制值关联的 ASCII 字符

python - 什么是用于在 Python 中验证文件的好音频库?

iphone - 在 iOS5 中将 kAudioUnitSubType_Varispeed 添加到 AUGraph

android - 单击editText时如何选择音频文件?

R sprintf dec2hex错误

c++ - mp3 文件长度显示不正确

streaming - 将流媒体广播录制为 MP3