Ich schreibe eine C++ - Bibliothek für die Decodierung und Codierung von Audio zwischen verschiedenen Formaten/Codecs. Ich habe eine Routine, um das Format vor dem Laden der erforderlichen Codec-Bibliothek schnell zu erkennen.Erkennen, ob Datei MP3 ist
Für WAV-Dateien kann man am Anfang der Datei einfach nach den ASCII-Werten "RIFF" und "WAVE" suchen. Das gleiche gilt für FLAC, wir können einfach die ersten 4 Bytes einlesen, die "fLaC" sein werden.
Aber wie kann ich schnell erkennen, wenn eine Datei MP3 ist? Ich kann mich nicht auf die Dateierweiterung verlassen. Ich kann auch nicht versuchen, den ersten MP3-Frame zu dekodieren, da am Anfang der Datei eventuell weitere Daten liegen (zB: ID3, Titelbild, etc).
Die vorgeschlagene Byte-Sequenz ('I'' D' '3') ist Teil der Kopfzeile für ein ID3 (v2) -Metadaten-Tag, aber nicht alle MP3-Dateien haben ID3v2-Tags (und ein ID3v2.4-Tag könnte sein am Ende der Datei statt am Anfang). – Deltics