我正在编写一个C++库,用于在不同格式/编解码器之间解码和编码音频。我有一个快速检测所需编解码库的格式的例程。
对于WAV文件,可以简单地查找文件开头的ASCII值“RIFF”和“WAVE”。FLAC也是如此,我们只需读取前4个字节,这将是“fLaC”。
但是如何快速检测文件是否为MP3?我不能依靠文件扩展名。我也不能尝试解码第一个MP3帧,因为文件开头可能会有附加数据(例如:ID3、封面图像等)。
对于WAV文件,可以简单地查找文件开头的ASCII值“RIFF”和“WAVE”。FLAC也是如此,我们只需读取前4个字节,这将是“fLaC”。
但是如何快速检测文件是否为MP3?我不能依靠文件扩展名。我也不能尝试解码第一个MP3帧,因为文件开头可能会有附加数据(例如:ID3、封面图像等)。