Informationen aus File auslesen

stetabar

Mitglied
Hallo zusammen,

ich bin auf der Suche nach einer Lösung aus einer .mp3-Datei per PHP die Dateiinformationen auszulesen.
Also wenn in der Datei zB ein Album und einen Interpreten hinterlegt ist, dass ich diesen mittels PHP ermittle.
Mit
PHP:
lstat
konnte ich zB allgemeine Dateiinfos erhalten, aber wie komme ich an die oben genannten Infos?

Wäre schön, wenn mir da jemand einen Tipp geben könnte.

Besten Dank im Voraus!
 
Erstmal Danke, Klein0r!

Wie muss ich denn mein PHP anpassen, damit mein PHP die id3-Tags verarbeiten kann?

Wenn ich das so ausführe, passiert nichts.

Ich nehme an, dass ich das id3-Modul in meiner php.ini aktivieren muss, oder so...

Ich habe die PHP Version 5.2.3 auf meinem Server, aber die scheint das nicht zu wollen...:suspekt:
 
Zuletzt bearbeitet:
id3_get_tag() sollte eigendlich genau das sein was du suchst.

Wichtig hierbei:
Installation

Die id3 Extension ist Teil des PECL Archivs und kann mit Hilfe des PEAR Installationstools installiert werden. Wenn Sie PHP selbst mit id3 Unterstützung kompilieren wollen laden Sie den Quellcode herunter, entpacken ihn in php-src/ext/id3 und kompilieren dann PHP mit --enable-id3.
 
Okay also musste ich das Paket doch mal laden - aber habs nicht getestet.
Um das anzuwenden sollte man einigermaßen Ahnung von OOP haben - wenn du das ganze nur includest ist klar das nichts passiert weil er dann nur die klassen deklariert.

Schau dir doch einfach mal unter demos die demo.browse.php an.
Da schlägste dich dann durch und am Ende weißt du hoffentlich wie du das ganze anwenden musst ;)

EDIT:
Oder du machst es wie Loomes sagt - allerdings kann das Paket was ich dir gegeben habe sicher noch Ecke mehr - die Frage ist was genau du willst
Für dich könnte es fast so reichen... Allerdings muss dafür wohl dein Provider diese Option eingeschaltet haben - sonst wird das nichts ;)
 
Habe es nun endlich hinbekommen. (!)
Also lag an den Einstellungen in meiner php.ini.

Nachdem ich die dll dann richtig geladen hatte, hat er mir die Info zurückgegeben!

Besten Dank nochmal!
 
Ich habe mir mal selber Funktionen geschrieben um ID3v1.x Tags auszulesen. Hierbei muss man nur die letzten 128 Byte der Datei auswerten. Allerdings ist das Script nicht gerade gut geschrieben und müsste etwas angepasst werden.
PHP:
function id3($filename)
{
	global $genres;
	
	$arr = array();
	if (!is_file($filename) or filesize($filename) < 128)
	{
		return false;
		break;
	}
	
	$fp = fopen($filename, "r");
	fseek($fp, filesize($filename) - 128);
	$id3 = fread($fp, 128);

	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";
		}
		
		$arr["genre"] = $genres[ord($id3[127])];
		
		clearstatcache();
		
		return $arr;
	}
	
	return false;
}

$genres = 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 US',
	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',
	76  => 'Retro',
	77  => 'Musical',
	78  => 'Rock & Roll',
	79  => 'Hard Rock',
	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 => 'Rhytmic Soul',
	119 => 'Freestyle',
	120 => 'Duet',
	121 => 'Punk Rock',
	122 => 'Drum Solo',
	123 => 'Acapella',
	124 => 'Euro-House',
	125 => 'Dance Hall',
	126 => 'Goa',
	127 => 'Drum & Bass',
	128 => 'Club-House',
	129 => 'Hardcore',
	130 => 'Terror',
	131 => 'Indie',
	132 => 'BritPop',
	133 => 'Negerpunk',
	134 => 'Polsk Punk',
	135 => 'Beat',
	136 => 'Christian Gangsta Rap',
	137 => 'Heavy Metal',
	138 => 'Black Metal',
	139 => 'Crossover',
	140 => 'Contemporary Christian',
	141 => 'Christian Rock',
	142 => 'Merengue',
	143 => 'Salsa',
	144 => 'Trash Metal',
	145 => 'Anime',
	146 => 'Jpop',
	147 => 'Synthpop'
);

$file ="C:/my.mp3";
$ID3tag = $data = id3($file);

if(true === is_array($ID3tag))
{
	$ID3tag['filesize'] = round(filesize($file) / 1024 / 1024,2)." MB";
}

echo '<pre>';
var_dump($ID3tag);
echo '</pre>';

Damit kannst du es ja mal probieren :) Ist halt noch aus meinen anfänglichen PHP4 Zeiten ...
 
Ein Response vom Ersteller wäre nicht schlecht, damit andere auch wissen, was denn nun die Lösung ist :)
 
Zurück