我正在编写一个C ++库,用于在不同格式/编解码器之间解码和编码音频。在加载所需的编解码器库之前,我有一个快速检测格式的例程。
对于WAV文件,可以在文件开头简单地查找ASCII值“RIFF”和“WAVE”。这同样适用于FLAC,我们可以简单地读取前4个字节,这将是“fLaC”。
但是如何快速检测文件是否为MP3?我不能依赖文件扩展名。我也无法尝试解码第一个MP3帧,因为文件开头可能还有其他数据(例如:ID3,封面图片等)。
答案 0 :(得分:24)
检测文件是否是MP3比在文件中搜索固定模式更复杂。
Some concepts
(详见http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header)
Algorithm to determine if a file is MP3 or not
答案 1 :(得分:-3)
我只是检查您现有的wave和flac测试中的签名
一个mp3文件should have this in hex:
0x49, 0x44, 0x33
它适用于我的一些文件。我不确定它是否适用于所有情况,因此可能需要更复杂的解决方案,例如Oak Bytes的答案。