ooMPEG

  • Ich habe mich mal rangesetzt und ein Modul programmiert, dass die ID3-Tags aus MPEG-Dateien auslesen kann.

    Es werden die Versionen v1.0, v1.1 und v2.3 und v2.4 (eingeschränkt) unterstützt und dabei werden die wichtigsten ID3-Frames ausgelesen.


    Edit 13.07.2020: Komplett neue Version (deswegen auch die Änderung des Threadtitels).

    - Es werden jetzt nicht nur die ID3-Frames ausgelesen, sondern auch noch der MPEG-Header analysiert (Bitrate, Kodiermethode, Samlingfrequenz, Laufzeit, etc.).

    - Fast komplett neu geschrieben. Der Code ist jetzt sehr Objektorientiert. Das erleichert die Verwendung, weil alle Daten im Objekt enthalten sind.

    - DIe benutzen Konstanten (Arrays) sind jetzt in einer extra Datei untergebracht ("ooMPEGconstants.nim").

    - Ich habe den Code ausführlich kommentiert. Hauptsächlich, damit ich mich selbst, nach einem Jahr oder so, noch daran erinnern kann, was ich da geschrieben habe, aber vielleicht ist das ja auch für euch hilfreich.


    Edit 18.08.2020: So einiges entdeckt man erst, wenn man die Funktionen auf zahlreiche MP3s loslässt.

    - Bug, beim ID3v1.x Format. Dort konnte ein Array-Überlauf passieren, wenn die Genrenummer >126 war. Behoben!

    - Man kann jetzt als ID3-Versionsnummer auch "0" angeben. In dem Fall wird versucht, erst die ID3v2.x Daten zu laden und wenn die nicht vorhanden sind, dann ID3v1.x.

    - Wenn beim ID3v1.x Format zwar die "TAG"-Kennung vorhanden ist, aber dann keine Daten vorhanden sind, kommt es nun zum "Fallback" auf den Dateinamen.

    - Wenn beim ID3v2.x Format die Größe eines Frames 0 Bytes beträgt, wird der Frame jetzt übersprungen (fehlerhafte ID3-Daten).

    - Wenn nach dem ID3v2.x Tag nicht gleich ein MPEG-Header folgt, sondern erst einige Bytes später, wurde die MP3-Datei als "nicht gültig" angesehen. Behoben!

    - Wenn keinerlei ID3-Daten vorhanden sind, erfolgt ein "Fallback" auf die Daten im Dateinamen (mit Separator-Split). Jetzt gibt es noch ein letztes "Fallback" (wenn auch der Separator nicht gefunden wird). Es wird dann der Dateiname (ohne Endung) als Interpret eingetragen.



    Hier mal das Beispielprogramm:


    Alles nochmal im ZIP-Archiv (Anhang) zum herunterladen.

  • Oscar

    Hat den Titel des Themas von „ID3mod“ zu „ooMPEG“ geändert.