MP3 Tags mit PHP auslesen

Hallo,
hat einer von euch ein Script zum Auslesen des MP3 Tags in PHP,
das ganze soll einfach sein… oben Dateinamen rein… unten die Variablen raus.
Gruß
Björn

PHP: id3_get_tag - Manual

Kenne bisher keinen, aber vielleicht bist du der erste und stellst dann deine Arbeit hier vor … ist das nicht was?:smiley:

Einen Ansatz liefere ich mal über Master Google-Suche
Wäre toll, wenn was draus wird :cool:

Ich mache das nicht (direkt ID3Tags in IPS auslesen), weil ich nicht den Mediaplayer in IPS nutze und somit über einen Umweg (bei mir Sonos) auf diese Infos zugreife.

Per Google habe ich jedoch einige gute Klassen und Skripte gefunden … jetzt kamen mir nancilla und Ferengi Master zuvor. :slight_smile:

Hallo,
habe mal nach einigen Versuchen das 1. Ergebniss:

<?
$genre = array(0 => "Blues", 1 => "Classic Rock", 2 => "Country", 3 => "Dance", 4 => "Disco", 5 => "Funk",
   6 => "Grunge", 7 => "Hip-Hop", 8 => "Jazz", 9 => "Metal", 10 => "New Age",
   11 => "Oldies", 12 => "Other", 13 => "Pop", 14 => "R&B", 15 => "Rap",
   16 => "Reggae", 17 => "Rock", 18 => "Techno", 19 => "Industrial", 20 => "Alternative",
   21 => "Ska", 22 => "Death Metal", 23 => "Pranks", 24 => "Soundtrack", 25 => "Euro-Techno",
   26 => "Ambient", 27 => "Trip-Hop", 28 => "Vocal", 29 => "Jazz+Funk", 30 => "Fusion",
   31 => "Trance", 32 => "Classical", 33 => "Instrumental", 34 => "Acid", 35 => "House",
   36 => "Game", 37 => "Sound Clip", 38 => "Gospel", 39 => "Noise", 40 => "Alternative Rock",
   41 => "Bass", 42 => "Soul", 43 => "Punk", 44 => "Space", 45 => "Meditative",
   46 => "Instrumental Pop", 47 => "Instrumental Rock", 48 => "Ethnic", 49 => "Gothic", 50 => "Darkwave",
   51 => "Techno-Industrial", 52 => "Electronic", 53 => "Pop-Folk", 54 => "Eurodance", 55 => "Dream",
   56 => "Southern Rock", 57 => "Comedy", 58 => "Cult", 59 => "Gangsta", 60 => "Top 40",
   61 => "Christian Rap", 62 => "Pop/Funk", 63 => "Jungle", 64 => "Native American", 65 => "Cabaret",
   66 => "New wave", 67 => "Psychadelic", 68 => "Rave", 69 => "Showtunes", 70 => "Trailer",
   71 => "Lo-Fi", 72 => "Tribal", 73 => "Acid Punk", 74 => "Acid Jazz", 75 => "Polka",
   80 => "Folk", 81 => "Folk-Rock", 82 => "National Folk", 83 => "Swing", 84 => "Fast Fusion", 85 => "Bebob",
   86 => "Latin", 87 => "Revival", 88 => "Celtic", 89 => "Bluegrass", 90 => "Avantgarde",
   91 => "Gothic Rock", 92 => "Progressive Rock", 93 => "Psychedelic Rock", 94 => "Symphonic Rock", 95 => "Slow Rock",
   96 => "Big Band", 97 => "Chorus", 98 => "Easy Listening", 99 => "Acoustic", 100 => "Humour",
   101 => "Speech", 102 => "Chanson", 103 => "Opera", 104 => "Chamber Music", 105 => "Sonata",
   106 => "Symphony", 107 => "Booty Bass", 108 => "Primus", 109 => "Porn Groove", 110 => "Satire",
   111 => "Slow Jam", 112 => "Club", 113 => "Tango", 114 => "Samba", 115 => "Folklore",
   116 => "Ballad", 117 => "Power Ballad", 118 => "Rhythmic Soul", 119 => "Free Style", 120 => "Duet",
   121 => "Punk Rock", 123 => "A capella", 124 => "Euro-House", 125 => "Dance Hall");

$TrackNr = array(0 => "0", 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5", 6 => "6", 7 => "7", 8 => "8", 9 => "9", 10 => "10",
 11 => "11", 12 => "12", 13 => "13", 14 => "14", 15 => "15", 16 => "16", 17 => "17", 18 => "18", 19 => "19", 20 => "20", 21 => "21", 22 => "22", 23 => "23", 24 => "24");



$filename = 'C:\Musik\CHART BOXX -  I Feel Good - CD 1\15 - I Got You {I Feel Good} - James Brown.mp3';

  $fp = fopen($filename, "r");
  fseek($fp, filesize($filename) - 128);
  $id3 = fread($fp, 128);
  $arr = array();
  if (strtoupper(substr($id3, 0, 3)) == "TAG")
  {
	 $arr["start"] = trim(substr($id3, 0, 3));
    $arr["song"] = 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));
    $arr["comment"] = trim(substr($id3, 97, 28));
    $arr["track"] = $TrackNr[ord($id3[126])];
    $arr["genre"] = $genre[ord($id3[127])];
	echo $arr["start"];
	echo "
";
	echo $arr["song"];
	echo "
";
	echo $arr["artist"];
	echo "
";
	echo $arr["album"];
	echo "
";
	echo $arr["year"];
	echo "
";
	echo $arr["comment"];
	echo "
";
	echo $arr["genre"];
	echo "
";
	echo $arr["track"];
	
    return $arr;

  }
  else
    return false;
  fclose($fp);


?>

Ergebniss:


TAG
I Got You {I Feel Good}
James Brown
CHART BOXX -  I Feel Good - CD
1966

Pop
15

Ist leider nur die Version ID3 V1.1 aber für den Anfang reichts.
Gruß
Björn

Schau Dir doch mal diese Klasse an.

getID3() - The PHP media file parser

Hat den Vorteil das diese nicht starr an mp3 gebunden ist sondern so ziemlich alles an Mediaformaten abhandlen kann was es gibt. Auch deine ID3V2 (2.1 - 2.4).

Ich nutze es um die länge von Mediendateien auszuwerten.

Funktionales Teilchen.

Hallo wgreipl,
hast du mal ein Musterscript?
Gruß
Björn

Ist doch mit dabei

http://getid3.sourceforge.net/source/demo.basic.phps

OK Björn,

weil Du es bist hier eine Basics-Version von mir.

<?
include "getid3/getid3.php";           // Class zum Auslesen der Informationen einer Multimediadatei
$mp3  = "L:/Daten/mp3/ACDC/Back In Black/Back in Black.mp3";  // Array mit Audiodateien
$getID3 = new getid3;
$array = $getID3->analyze($mp3);
echo $array['fileformat']."
";
echo $array['audio']['sample_rate']."
";
echo $array['audio']['streams'][0]['encoder_options']."

";
 
print_r($array);
 
?>

Mit den echo-Ausgaben sieht Du wie eine Postition im Array angesprochen wird.

In der print_r-Ausgabe siehst Du was die Klasse alles an Informationen aus dem mp3 rausholt.

Viel Spaß damit.

Hallo wgreipl,
Super danke, schon im Script eingebaut.
Danke und Gruß
Björn

Hallo,
den MP3 TAG mit getid3 auslesen funktioniert super gut,
habe noch ein Problem mit dem Umlauten.
Ist da mit dem Zeichensatz was nicht OK?


CHART BOXX - Aprés Ski Party - CD 1
Jürgen Drews
Pop
König an der Schneebar
19
2000

C:/Musik/CHART BOXX - Aprés Ski Party - CD 1/19 - König an der Schneebar - Jürgen Drews.mp3

4:51

Pop
Array
(
    [GETID3_VERSION] => 1.9.3-20111213
    [filesize] => 11646438
    [filename] => 19 - König an der Schneebar - Jürgen Drews.mp3
    [filepath] => C:/Musik/CHART BOXX - Aprés Ski Party - CD 1
    [filenamepath] => C:/Musik/CHART BOXX - Aprés Ski Party - CD 1/19 - König an der Schneebar - Jürgen Drews.mp3
    [avdataoffset] => 1406
    [avdataend] => 11646310
    [fileformat] => mp3
    [audio] => Array
        (
            [dataformat] => mp3
            [channels] => 2
            [sample_rate] => 44100
            [bitrate] => 320000
            [channelmode] => joint stereo
            [bitrate_mode] => cbr
            [lossless] => 
            [encoder_options] => CBR320
            [compression_ratio] => 0.22675736961451
            [streams] => Array
                (
                    [0] => Array
                        (
                            [dataformat] => mp3
                            [channels] => 2
                            [sample_rate] => 44100
                            [bitrate] => 320000
                            [channelmode] => joint stereo
                            [bitrate_mode] => cbr
                            [lossless] => 
                            [encoder_options] => CBR320
                            [compression_ratio] => 0.22675736961451
                        )

                )

        )

    [tags] => Array
        (
            [id3v1] => Array
                (
                    [title] => Array
                        (
                            [0] => König an der Schneebar
                        )

                    [artist] => Array
                        (
                            [0] => Jürgen Drews
                        )

                    [album] => Array
                        (
                            [0] => CHART BOXX - Aprés Ski Party -
                        )

                    [year] => Array
                        (
                            [0] => 2000
                        )

                    [track] => Array
                        (
                            [0] => 19
                        )

                    [genre] => Array
                        (
                            [0] => Pop
                        )

                )

            [id3v2] => Array
                (
                    [album] => Array
                        (
                            [0] => CHART BOXX - Aprés Ski Party - CD 1
                        )

                    [artist] => Array
                        (
                            [0] => Jürgen Drews
                        )

                    [comment] => Array
                        (
                            [0] => Die 42 Knackicksten Hütten Hits
Chart Boxx - Exklusiv
BS Editionen YEAR: 2010
                        )

                    [genre] => Array
                        (
                            [0] => Pop
                        )

                    [title] => Array
                        (
                            [0] => König an der Schneebar
                        )

                    [track_number] => Array
                        (
                            [0] => 19
                        )

                    [year] => Array
                        (
                            [0] => 2000
                        )

                )

        )

    [encoding] => UTF-8
    [id3v2] => Array
        (
            [header] => 1
            [flags] => Array
                (
                    [unsynch] => 
                    [exthead] => 
                    [experim] => 
                )

            [majorversion] => 3
            [minorversion] => 0
            [headerlength] => 1406
            [tag_offset_start] => 0
            [tag_offset_end] => 1406
            [encoding] => UTF-8
            [comments] => Array
                (
                    [album] => Array
                        (
                            [0] => CHART BOXX - Aprés Ski Party - CD 1
                        )

                    [artist] => Array
                        (
                            [0] => Jürgen Drews
                        )

                    [comment] => Array
                        (
                            [0] => Die 42 Knackicksten Hütten Hits
Chart Boxx - Exklusiv
BS Editionen YEAR: 2010
                        )

                    [genre] => Array
                        (
                            [0] => Pop
                        )

                    [title] => Array
                        (
                            [0] => König an der Schneebar
                        )

                    [track_number] => Array
                        (
                            [0] => 19
                        )

                    [year] => Array
                        (
                            [0] => 2000
                        )

                )

            [TALB] => Array
                (
                    [0] => Array
                        (
                            [frame_name] => TALB
                            [frame_flags_raw] => 0
                            [data] => ÿþC

Gruß
Björn

Right, Codierung

$string = "König an der Schneebar";
echo utf8_decode($string);

ergibt

König an der Schneebar

Hallo,

der Thread hat zwar schon ein paar Tage auf dem Buckel, hab das Thema mp3-Tags aber gerade im Visier und gleich ein Problem: meine Musik liegt auf nem Netzlaufwerk, er kann die Datei nicht auslesen, wahrscheinlich ein Berechtigungsproblem, da es mit Dateien direkt auf der Festplatte problemlos geht.

Kann mir einer sagen, wie ich die entsprechende Berechtigung (User/Kennwort) mit übergebe?

Danke
Marc