
Analyse des MP3-Dateiformats

1. Zusammenfassung von MP3- und MPEG-Dateien
![]()
Eine MP3-Datei besteht aus Frames, und ein Frame ist die kleinste Einheit einer MP3-Datei. Der vollständige Name von MP3 muss MPEG1 Layer-3-Audiodatei sein.
MPEG (MovingPictureExperts Group), MPGE-Audioschicht bezieht sich auf den Tonteil der MPGE-Datei, der je nach Qualität und Komplexität der Codierung in drei Schichten unterteilt ist, nämlich Schicht-1, Schicht2 und Schicht3, entsprechend MP1, MP2 und Dateien im MP3-Format.
2. Struktur von MP3-Dateien
MP3-Dateien sind in 3 Teile unterteilt: TAG_V2(ID3V2) , Rahmen, TAG_V1(ID3V1) .
( 1 ) Rahmenformat
Der Frame-Header hat 4 Bytes und seine Struktur ist wie folgt
typedef FrameHeader
{
unsigned intsync: 11; // Synchronisationsinformationen
vorzeichenlose Invertierung: 2; // Ausführung
unsigned intlayer: 2; // Schicht
unsigned intprotection: 1; // CRC-Prüfung
unsigned bitrate: 4; // Bitrate
vorzeichenlose Zwischenfrequenz: 2; // Beispielrate
unsigned intpadding: 1; // Rahmenlänge anpassen
unsigned intprivate: 1; // reserviertes Wort
unsigned intmode: 2; // Kanalmodus
unsigned int mode extension: 2; // Erweiterter Modus
unsigned intcopyright: 1; // Urheberrechte ©
unsigniertes Original: 1; // Original-Logo
unsigned Hervorhebung: 2; // Hervorhebungsmodus
}
HEADER, *LPHEADER;
Die Wiedergabe jedes Frames dauert 26 ms, unabhängig von der Länge des Frames. Die Länge von MAIN_DATA ist
Length(MAIN_DATA) = ((Version == MPEG1)?144:72) * Bitrate/Frequenz + Padding;
(2) ID3V1-Format
ID3V1 wird am Ende der MP3-Datei gespeichert, insgesamt 128 Bytes, alle Informationen werden sequentiell gespeichert und der unzureichende Teil wird mit ‘\0’ aufgefüllt, was mit UltraEdit geöffnet und angezeigt werden kann.
typedef tagID3V1-Struktur
{
char-header[3];
Zeichentitel[30];
Künstler char[30];
Albumzeichen[30];
char Jahr[4];
char Kommentar[28];
Kohlevorrat;
Zeichenspur;;
charGenus;
}
ID3V1,*pID3V1;
( 3 ) ID3V2-Format
ID3V2 wird im Header der MP3-Datei gespeichert und besteht aus einem Tag-Header und mehreren Tag-Frames.
Der Tag-Header ist 10 Byte groß,
char-header[3];
char sehen;
Charakterüberprüfung;
char-Flag;
Zeichengröße [4];
Jeder Tag-Frame besteht aus einem 10-Byte-Frame-Header und mindestens einem Byte Inhalt mit variabler Länge. Der Frame-Header ist wie folgt definiert:
Zeichenrahmen-ID[4];
Zeichengröße [4];
char-Flags[2];
