Denkfehler zwischen ID3v1 & ID3v1.1?

Radhad

Erfahrenes Mitglied
Hi zusammen,

ich versuche eine unterscheidung zwischen dem ID3 v1 & v1.1 Tag zu machen. Allerdings scheint die Überprüfung falsch zu sein. Hat da jemand eine Idee?
PHP:
if (strtoupper(substr($id3, 0, 3)) == "TAG")
{
	$arr["title"] = trim(substr($id3, 3, 30));
	$arr["artist"] = trim(substr($id3, 33, 30));
	$arr["album"] = trim(substr($id3, 63, 30));
	$arr["year"] = trim(substr($id3, 93, 4));
	if (substr($id3, 125, 1) == "\0" && substr($id3, 126, 1) != "\0")
        { // we got a ID3v1.1 here
            $arr["comment"] = trim(substr($id3, 97, 29));
            $arr["track"] = ord(substr($id3, 126, 1));
            $arr["version"] = "ID3v1.1";
        }
        else
        { // old ID3v1
            $arr["comment"] = trim(substr($id3, 97, 30));
            $arr["version"] = "ID3v1";
        }
}
 
Hallo,

also irgendwoher kommt mir das bekannt vor… ach ja! Der Code ist ja von mir :D (siehe dort)

Was genau stimmt denn mit der Überprüfung nicht? Hab jetzt das Schema eines ID3-Tags nicht mehr im Kopf, aber damals scheint's geklappt zu haben, wenn ich mich nicht täusche.

Grüße,
Matthias
 
Hmm... hab den Code per Google auf ner anderen Page gefunden ;)

Also später, wenn ich die Infos ausgeben lasse, fehlt die Information zu Version, Comment & Track Nummer, also scheint da ein ziemliches Problem zu sein :/
 
Hallo,

was ergibt denn folgender Code, wenn du den Pfad zu einer entsprechenden MP3-Datei einsetzt?
PHP:
<?php
$mp3file = 'pfad/zu/einer/datei.mp3';
echo chunk_split(bin2hex(substr(file_get_contents($mp3file),-128)),32);
?>

Grüße,
Matthias
 
Testdatei 1
Code:
544147446f776e66616c6c0000000000 00000000000000000000000000000000 004368696c6472656e204f6620426f64 6f6d0000000000000000000000000044 6f776e66616c6c202845502900000000 00000000000000000000000000323030 3054657374204d503300000000000000 0000000000000000000000000000010c
Testdatei 2
Code:
544147457665727974696d6520492044 69650000000000000000000000000000 004368696c6472656e206f6620426f64 6f6d0000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00200000000000000000000000000000 00000000000000000000000000000100
 
Hallo,

also wenn ich mir diese Hexadezimalzahlen in einen Binärstring zurückwandle und die ID3-Erkennung drüber lasse, wird bei mir ein vermutlich korrektes Array erstellt.

Testdatei 1:
Code:
Array
(
    [title] => Downfall
    [artist] => Children Of Bodom
    [album] => Downfall (EP)
    [year] => 2000
    [comment] => Test MP3
    [track] => 1
    [version] => ID3v1.1
)
Testdatei 2:
Code:
Array
(
    [title] => Everytime I Die
    [artist] => Children of Bodom
    [album] => 
    [year] => 
    [comment] => 
    [track] => 1
    [version] => ID3v1.1
)
Insofern kann ich das Problem leider nicht nachvollziehen…

Grüße,
Matthias
 
*lacht sich schlapp*

Da sitzt man dauernd vorm Code und sieht den Fehler erst, nachdem man sich mit anderen Dingen (SharePoint 2007) beschäftigt. Ich hatte da ein paar Tippfehler drinne. Jetzt läuft es super und es wird auch zwischen v1 und v1.1 unterschieden.

Hast du vielleicht auch Tipps zu v2.x? Das ist ja viel komplizierter :(
 
getID3() ist mir viel zu komplex und mphp3 sagt immer, meine mp3-Datei wäre nicht valid (egal bei welcher Datei).

Ich hab schon viele ausprobiert. Bisher am besten klappte die Klasse von michaels-website, da habe ich schon einen Fehler korrigiert - aber 100%ig läuft die auch nicht. Aber die Klasse ist sehr gut & leicht zu benutzen.
 
Ich hab nochmal ein Problem bzgl. Files!

Ich benötige auch die Dateigröße, welches ja mit filesize() in Byte zurückgegeben wird. aber die Umrechnung in MByte will gar nicht klappen. Habe das wie folgt gemacht:
PHP:
$mp3s[$numMP3]["filesize"] = filesize($folder."/".$file) / 1024 / 1024;
Aber es wird garnicht erst umgerechnet :/



Gruß Radhad
 
Zurück