Sto scrivendo una libreria C++ per decodificare e codificare l'audio tra diversi formati/codec. Ho una routine per rilevare rapidamente il formato prima di caricare la libreria di codec richiesta.Rileva se il file è MP3
Per i file WAV è possibile cercare i valori ASCII "RIFF" e "WAVE" all'inizio del file. Lo stesso vale per FLAC, possiamo semplicemente leggere i primi 4 byte, che saranno "fLaC".
Ma come posso rilevare rapidamente se un file è MP3? Non posso fare affidamento sull'estensione del file. Inoltre, non posso provare a decodificare il primo frame MP3, poiché potrebbero esserci ulteriori dati all'inizio del file (ad es. ID3, immagine di copertina, ecc.).
La sequenza di byte suggerita ('I'' D' '3') fa parte dell'intestazione per un tag di metadati ID3 (v2) ma non tutti i file MP3 avranno tag ID3v2 (e un tag ID3v2.4 potrebbe essere alla fine del file piuttosto che all'inizio). – Deltics