如何检测文件是不是使用 mp3PRO 编码?
Posted
技术标签:
【中文标题】如何检测文件是不是使用 mp3PRO 编码?【英文标题】:How to detect if a file is encoded using mp3PRO?如何检测文件是否使用 mp3PRO 编码? 【发布时间】:2015-07-24 19:36:17 【问题描述】:我有一个包含大量 MP3 文件的文件夹,其中一些是使用 mp3PRO 编码的。
由于这种格式现在已经过时,我想将它们转换回 MP3(转换器很容易找到)。
有没有办法以编程方式检测文件是否使用 mp3PRO 格式编码?(例如:通过使用十六进制编辑器查看文件头或特定签名)
official player 能够检测文件是否使用 mp3PRO 编码(徽标是否突出显示)所以我认为这在技术上是可行的。
到目前为止,我发现 mp3PRO 文件的比特率似乎很低(非编码文件的 50%):例如:128 kbps 文件将显示为 64kbps。然而,一个 320 kbps 的文件将显示为 160 kpbs(这很常见),因此不能作为规则使用。
【问题讨论】:
vlc 处理它,因此请检查 vlc 源以查看他们如何检测格式。 你的意思是一一吗?或者有没有办法为文件列表做到这一点? VLC 可能会将其解码为基本 mp3 文件。当你用 vlc 播放时,你在 Tools->Codec Information 下看到了什么? 与任何 MP3 文件非常相似:Steam 0 类型:音频编解码器:MPEG 音频层 1/2 (mpga) 通道:立体声采样率:22050 Hz 比特率:64kbps 【参考方案1】:这是我发现的内容以及我如何修复它。我写在这里以防有人需要它:
MP3Pro 文件在 mp3 标头中不包含任何有助于识别它们的特殊标志。
它们在技术上与通常的 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
【讨论】:
以上是关于如何检测文件是不是使用 mp3PRO 编码?的主要内容,如果未能解决你的问题,请参考以下文章