MP3 Database
Mein erstes VisualStudio 2005 Projekt besteht daraus mittels .NET die ID3 Tags von MP3 Dateien
auszulesen und in einer MSSQL Datenbank zu speichern.
Das Konzept sah eine Klasse zum Auslesen der Tags vor, eine Klasse für den DB Zugriff und ein
Programmfenster zur bedienung der Aktivitäten sowie ein ASP.Net Interface zum Abfragen der
Datenbank.
Zurück zum Inhalt
Um die Software nutzen zu können, benötigt man das
.NET Framework Version 2.0 Redistributable Package Beta 2
und eine MDSE.
Zurück zum Inhalt
Bei ID3v1.1 enthalten die letzten 128 Bytes die ID3 Tags. Da alle Felder feste längen haben
und an einem definierten Ort stehen kein Problem diese auszulesen.
Tag Header | 3 Bytes (TAG) |
Song title | 30 characters |
Artist | 30 characters |
Album | 30 characters |
Year | 4 characters |
Comment | 28 characters gefolgt von einem NULL Byte |
Track | 1 Byte |
Genre | 1 Byte |
Referenz: http://www.id3.org/id3v1.html
Zurück zum Inhalt
Das ID3v2 Tag befindet sich am Anfang der Datei und die ersten 3 Bytes sind TAG. Da aber die FrameIDs in
beliebiger Reihenfolge auftauchen können, ist die Programmierung hier etwas schwieriger.
ID3v2 Tag |
ID3 Header 10 Bytes | Frame Header 10 Bytes | Frame Information |
TAG | Version | Flags | Size | FrameID | Size | Flags | Text |
|
xx xx xx | xx xx | xx | xx xx xx xx | xx xx xx xx | xx xx xx xx | xx xx | n * xx |
Zudem ist der Text in ISO 8859-1 oder Unicode UTF-16 codiert.
ASCII und ISO 8859-1 sind Bestandteile (Teilmengen) von Unicode:
(Vollständige Übersicht: http://www.unicode.org/charts/)
UTF-16 |
FE FF | big-endian (Motorola, PowerPC) |
FF FE | little-endian (Intel) |
Erstes Zeichen ist xFEFF (ZERO WIDTH NO-BREAK SPACE), das als "Byte Order Mark" – BOM fungiert.
Die wichtigsten FrameIDs |
TRCK | TrackNo |
TPE1 | Artist |
TIT2 | Titel |
TALB | Album |
TYER | Jahr |
TCON | Genre |
COMM | Kommentar |
Referenz: http://www.id3.org/id3v2.3.0.html
Zurück zum Inhalt
MP3 Header
OffSet |
Bits |
Beschreibung |
0 |
12 |
SyncWord |
12 |
1 |
MPEG Version |
13 |
2 |
MPEG Layer |
15 |
1 |
Protection Bit |
16 |
4 |
Bitrate |
20 |
2 |
Sampling Frequenz |
22 |
1 |
Padding Bit |
23 |
1 |
Private Bit |
24 |
2 |
Mode |
26 |
2 |
Mode Extension |
28 |
1 |
Copyright |
29 |
1 |
Original Home |
30 |
2 |
Emphasis |
Referenz: http://sites.inka.de/sites/plagiats-home/mp3-header.html
Zurück zum Inhalt
So sieht die ID3 Klasse dann aus
Zurück zum Inhalt
Hier das Datenbankschema
Zurück zum Inhalt
Um eine einzige Schnittstelle zwischen Programm und DB zu haben, habe ich eine Klasse geschrieben,
welche den Datenbankzugriff erledigt.
Diese Klasse besitzt auch Methoden zum erstellen der Datenbank und das aktualisieren der Daten.
Durch das komplexere normalisierte Design der Datenbankstrucktur, habe ich den Weg via Stored Procedures gewählt
um Werte in die DB zu übertragen.
Zurück zum Inhalt
Das Hauptfenster des Programms
Zurück zum Inhalt
Das Webinterface