php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.09.2007, 17:30  
Neuer Benutzer
 
Registriert seit: 15.09.2007
Beiträge: 3
s.striezel befindet sich auf einem aufstrebenden Ast
Standard ID3-Tags auslesen

Hi,
Nachdem ich jetzt schon ewig such, stell ich die Frage hier:
Wie kann ich von einer mp3-Datei die Tags auslesen???

Etwas interessantes hab ich hier gefunden: PHP-Center
Das Script funktioniert. Ich möchte allerdings auch die Bitrate und die länge des liedes ermitteln!

Hoffe es kann mir jemand helfen!

Gruß s.stiezel
s.striezel ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.11.2007, 11:28  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Der Beitrag von PHPcenter ist schön und gut, aber eher (finde ich) unnütz mit:
PHP-Code:
<?php
$genre 
= array(=> "Blues"=> "Classic Rock"=> "Country"=> "Dance"=> "Disco"=> "Funk",
   
=> "Grunge"=> "Hip-Hop"=> "Jazz"=> "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");


function 
id3($filename "")
{
  global 
$genre;
  if (!
is_file($filename) or filesize($filename) < 128)
  {
    return 
false;
    break;
  }
  
$fp fopen($filename"r");
  
fseek($fpfilesize($filename) - 128);
  
$id3 fread($fp128);
  
$arr = array();
  if (
strtoupper(substr($id303)) == "TAG")
  {
    
$arr["song"] = trim(substr($id3330));
    
$arr["artist"] = trim(substr($id33330));
    
$arr["album"] = trim(substr($id36330));
    
$arr["year"] = trim(substr($id3934));
    
$arr["comment"] = trim(substr($id39730));
    
$arr["genre"] = $genre[ord($id3[127])];
    return 
$arr;
  }
  else
    return 
false;
  
fclose($fp);
}
?>
.
Was soll mir die kleine INFO wenn ich immer noch nicht weiss wie ich dei tags auslesen kann!!
PTC ist offline   Mit Zitat antworten
Alt 15.11.2007, 23:26  
Benutzer
 
Registriert seit: 23.07.2007
Beiträge: 35
Sven befindet sich auf einem aufstrebenden Ast
Sven eine Nachricht über ICQ schicken
Standard

Wie immer: Als Hilfe sollte man sich immer php.net zur Hand nehmen.

Hier, das sollte im Bezug auf die ID3-Tags weiterhelfen: PHP: ID3 Funktionen - Manual

Allerdings stehen diese Infos nicht im ID3-Tag, sondern im Header der Datei selbst. Da dort auf jeden Fall die Bitrate drin zu finden ist, sollte sich somit auch ohne Probleme die Länge ermitteln lassen anhand der Bitrate und der Dateigröße.
Sven ist offline   Mit Zitat antworten
Alt 16.11.2007, 01:11  
Benutzer
 
Registriert seit: 23.07.2007
Beiträge: 35
Sven befindet sich auf einem aufstrebenden Ast
Sven eine Nachricht über ICQ schicken
Standard

So, ich habe mir mal den Header einer MP3-Datei genauer angesehen. Da ich hier auf anhieb nicht weiter wusste hat es mich gereizt es herauszufinden und siehe da, wieder ein bisschen schlauer.

Also nun die halbfertige Lösung:

1. Bei Wikipedia habe ich angefangen mich reinzulesen, was im Header stehen soll...
MPEG-1 Audio Layer 3 - Wikipedia durchlesen und halbwegs verstehen.

PHP-Code:
$MP3Info = array();
$fp      fopen("foobar.mp3""r");
$Header  fread($fp4); // 4*8Bit (Angabe hier ist ja in Byte) für den 32Bit Header
fclose($fp);

$Bitraten = array(=> "freies Format",    // Aus Wikipedia entnommen
                 
=> 32,
                 
=> 40,
                 
=> 48,
                 
=> 56,
                 
=> 64,
                 
=> 80,
                 
=> 96,
                 
=> 112,
                 
=> 128,
                 
10 => 160,
                 
11 => 192,
                 
12 => 224,
                 
13 => 256,
                 
14 => 320);

$Header  unpack("n2"$Header);  // siehe http://de2.php.net/manual/de/function.pack.php
$Bitrate $Header['2'] >> 12// Laut Wikipedia ab Bit17,18,19,20, daher die Rechtsverschiebung um 12Bit

$MP3Info['bitrate'] = $Bitraten[$Bitrate]; // Gibt uns die Bitrate des Liedes in Kbit an 
So nun die Liedlänge ermitteln. Dazu hab ich mir folgende, für mich logische Erklärung:

Dateilänge / Bitrate = Spieldauer

Die Dateilänge ermitteln wir in PHP mit filesize und gibt uns die Dateigröße in Byte an. Also bringen wir alles auf einen Nenner und rechnen die Bitrate, die in Kbit angegeben ist ebenfalls in Byte um. Um von KBit auf Byte zu kommen multiplizieren wir mit 128 (1024 Bit / 8 Bit = 128 Byte). Da der Header ja auch ganze 4 Byte groß ist ziehen wir den gleich mal ab.

PHP-Code:
$MP3Info['groesse'] = filesize("foobar.mp3");
$MP3Info['dauer']   = round($MP3Info['groesse'] / ($MP3Info['bitrate'] * 128)-4); // Angabe in Sekunden mit Headerabzug

echo "Bitrate:\t".    $MP3Info['bitrate'] ."Kbit\n";
echo 
"Spieldauer:\t"date("i:s"$MP3Info['dauer']); 
Das funktioniert soweit auch ganz gut bis auf die Abweichung der Spieldauer um úngefähr -zwei Sekunden.

Nun seid ihr dran.
Sven ist offline   Mit Zitat antworten
Alt 18.11.2007, 13:12  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

KRASS!
Ich verbeuge mich zu tiefst!!
PTC ist offline   Mit Zitat antworten
Alt 01.09.2009, 17:52  
Neuer Benutzer
 
Registriert seit: 01.09.2009
Beiträge: 1
PHP-Kenntnisse:
Anfänger
Heddy befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
das Thema ist zwar schon was älter, aber trotzdem habe ich es gefunden.
Ich habe den Code mal ausprobiert und bei den Bitrates UND bei der Länge stimmt es überhaupt nicht ein.
Das Script sagt mir, dass ein Lied (was eigentlich 2:53 lang ist) 7:28 lang ist.
Außerdem zeigt es mir an, dass das Lied 48 Kbit/s hat. Eigentlich hat es aber 128 kbit/s.
Irgendwie verstehe ich das nicht so ganz, warum es mir SOOO andere Werte anzeigt o0...
Heddy ist offline   Mit Zitat antworten
Alt 01.09.2009, 18:46  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das macht mein mp3-Player bei variablen Bitraten aber auch.
Noch zu #4: Nicht alle ID-3-Versionen führen ihre Daten am Anfang der Datei (vgl. ID3-Tag – Wikipedia). Imho gibts auch bereits sehr gute Bibliothemen zum php-seitigen Auslesen von mp3-Tags.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.09.2009, 18:49  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

getid3
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ordner auslesen und während des auslesen sortieren Dooki PHP Tipps 2008 6 14.05.2008 17:50
Bestimme HTML Tags mittels RegEx rausfiltern Mano PHP Tipps 2008 6 27.09.2007 14:22
xml tags auslesen LP PHP Tipps 2006 2 14.09.2006 23:34
[Erledigt] gelöst: Tabelle auslesen -&amp;amp;amp;amp;gt; Gleiche Einträge nur 1 Mal Datenbanken 3 31.03.2006 01:44
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
[Erledigt] bestimmte ID's auslesen als array PHP Tipps 2007 2 31.10.2005 20:23
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
alle Verzeichnisse sortiert auslesen PHP Tipps 2005-2 7 17.07.2005 10:20
binäre id3v2 tags auslesen mrSpok PHP-Fortgeschrittene 5 03.06.2005 12:56
auslesen und nochmals auslesen?! $$$ ThiKool $$$ PHP Tipps 2005 23 10.03.2005 19:43
Text zwischen Tags auslesen PHP Tipps 2005 5 27.01.2005 12:13
Klassen auslesen PHP Tipps 2007 8 10.01.2005 07:07
[Erledigt] Auslesen von Text incl. &quot; aus Textfeld PHP Tipps 2007 4 04.01.2005 13:30
[Erledigt] Daten von anderer Homepage auslesen PHP Tipps 2004-2 5 02.12.2004 18:49
[Erledigt] imap_qprint ohne (HTML Tags) PHP-Fortgeschrittene 0 29.09.2004 14:09

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php id3 tag auslesen, php id3 tags auslesen, php id3, php mp3 id3 tags auslesen, id3 php, id3 tag auslesen php, php mp3 id3, php id3 auslesen, id3 tags auslesen php, id3 tags mit php auslesen, id3 php auslesen, php mp3 länge auslesen, php id3tag auslesen, php mp3 id3 tag auslesen, id3 auslesen php, id3 tag mit php auslesen, mp3 tags auslesen, http://www.php.de/php-fortgeschrittene/151-id3-tags-auslesen.html, id3 mit php auslesen, mp3 dauer

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum