Hallo,
im Rahmen meines Music-Manager Projektes baue ich grade eine PHP-Klasse um ID3-Tags aus MP3's herauszulesen. Soweit kein problem, es existiert ja ein Standard, der alles genau erklaert. Jetzt haenge ich aber schwer an einer Stelle, wo ich den Header des ID3-Tags, speziell die Groesse parsen will.
The ID3v2 tag header, which should be the first information in the file, is 10 bytes as follows:
ID3v2/file identifier "ID3"
ID3v2 version $03 00
ID3v2 flags %abc00000
ID3v2 size 4 * %0xxxxxxx
The first three bytes of the tag are always "ID3" to indicate that this is an ID3v2 tag, directly followed by the two version bytes. The first byte of ID3v2 version is it's major version, while the second byte is its revision number. In this case this is ID3v2.3.0. All revisions are backwards compatible while major versions are not. If software with ID3v2.2.0 and below support should encounter version three or higher it should simply ignore the whole tag. Version and revision will never be $FF.
The version is followed by one the ID3v2 flags field, of which currently only three flags are used.
[...]
http://id3.org/id3v2.3.0#head…9d93585e2652b0b
Jetzt ist die Frage, wie zum Teufel (xD) ich diese 4 Bytes "size" parsen soll.
bindec($sizeString);
Gibt 0 Zurueck. In jedem Fall, also bei 10-15 getesteten MP3's
var_dump($sizeString);
Gibt diese komischen Zeichen zurueck, die Binaer-Daten representieren.
(Also
<?>
Als ein Zeichen, man hat sowas sicher schon gesehen)
Mir ist klar, dass es dafuer schon fertige Klassen gibt (Google Reader, diverse Perl klassen, fertige Implementationen, usw.) aber ich wuerds gerne selber schreiben. In dem o.g. fertigen Code sehe ich die Stelle, wo ausgelesen wird nie. Was bei der PHP-Klasse Google-Reader daran liegt, dass der Code zu 90% aus
functuion name($param) { Return next_function($param) }
besteht. Ansonsten beherrsche ich leider kein LISP und meine Perl-Kenntnisse sind noch zu mager um da zu klauen.
Ich hoffe man kann mir hier helfen.
Gruss
crAzywuLf