Estoy escribiendo una biblioteca C++ para decodificar y codificar audio entre diferentes formatos/códecs. Tengo una rutina para detectar rápidamente el formato antes de cargar la biblioteca de códec requerida.Detectar si el archivo es MP3
Para los archivos WAV, puede buscar los valores ASCII "RIFF" y "WAVE" al principio del archivo. Lo mismo se aplica a FLAC, simplemente podemos leer en los primeros 4 bytes, que serán "fLaC".
Pero, ¿cómo puedo detectar rápidamente si un archivo es MP3? No puedo confiar en la extensión de archivo. Tampoco puedo intentar decodificar el primer fotograma de MP3, ya que podría haber datos adicionales al comienzo del archivo (por ejemplo: ID3, imagen de portada, etc.).
La secuencia de bytes que sugiere ('I'''''''') es parte del encabezado de una etiqueta de metadatos ID3 (v2) pero no todos los archivos MP3 tendrán etiquetas ID3v2 (y una etiqueta ID3v2.4 podría ser al final del archivo en lugar de al principio). – Deltics