異なるフォーマット/コーデック間でオーディオをデコードおよびエンコードするための C++ ライブラリを作成しています。必要なコーデック ライブラリをロードする前に、フォーマットをすばやく検出するためのルーチンがあります。
WAV ファイルの場合、ファイルの先頭にある ASCII 値 "RIFF" と "WAVE" を簡単に探すことができます。同じことが FLAC にも当てはまります。最初の 4 バイトを読み取るだけで、「fLaC」になります。
しかし、ファイルが MP3 かどうかをすばやく検出するにはどうすればよいでしょうか? ファイル拡張子に頼ることはできません。また、ファイルの先頭に追加のデータ (ID3、カバー画像など) がある可能性があるため、最初の MP3 フレームをデコードしようとすることもできません。