Я пишу библиотеку С++ для декодирования и кодирования звука между различными форматами/кодеками. У меня есть процедура для быстрого обнаружения формата перед загрузкой необходимой библиотеки кодеков.
Для файлов WAV можно легко найти значения ASCII "RIFF" и "WAVE" в начале файла. То же самое относится к FLAC, мы можем просто читать в первых 4 байтах, которые будут "fLaC".
Но как я могу быстро определить, является ли файл MP3? Я не могу полагаться на расширение файла. Я также не могу попытаться декодировать первый MP3-фрейм, поскольку в начале файла могут быть дополнительные данные (например: ID3, обложка и т.д.).