php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 07-01-2012, 20:02
JonasBauer
 Registrierter Benutzer
Links : Onlinestatus : JonasBauer ist offline
Registriert seit: Jan 2012
Beiträge: 5
JonasBauer befindet sich auf einem aufstrebenden Ast
Standard MP3 Header Probleme

Hallo @ all & danke für das Lesen dieses Topics.

Ich habe ein Problem bei dem mich selbst google nicht weiterzuführen scheint (registed for this post).

Seit einiger Zeit versuche ich eine Art "Einlesescript" für mp3 Files zu schreiben. Ausgelesen werden sollen die Tags der Datei + Informationen aus dem Header der Datei. Nun komme aber mit der Bitrate und den BPM nicht weiter.
Ich weiß, spuckt ne ganze Menge Scripts für sowas aus, jedoch:

Sämtliche Scripts/Klassen/Funktionen/sonstiges die ich bisher ausprobiert (und mehr oder weniger nachher durch editieren kaputt gemacht) hab, funktionieren perfekt für CBR...und/oder steigen bei der "Erkennung" von VBR aus oder geben einfach nur Käse aus...
(Eben "ABR" gelesen...gibts das auch noch?)

Die einzige Möglichkeit die funktionierte war getID3..aber..will ich nicht/mag ich nicht/neeee...

Aus Verzweiflung versuche ich mir gerade den Header einer MP3 Datei näher zu bringen um ein eigenes Script zu kreieren..

Was mich aber zu meinem nächsten Problem führt, die BPM.
Gibt es eine Möglichkeit diese aus einer vorliegenden MP3 zu berechnen (PHP) oder ist hierzu schlichtweg der ID3 Tag von Nöten?!

Jemand Ideen/Denkanstöße/Google-Stichworte oder Erfahrung?
Ich komm echt nicht weiter

Danke schonmal im vorraus..

Geändert von JonasBauer (07-01-2012 um 20:07 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 07-01-2012, 22:34
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von JonasBauer Beitrag anzeigen
...
Sämtliche Scripts/Klassen/Funktionen/sonstiges die ich bisher ausprobiert (und mehr oder weniger nachher durch editieren kaputt gemacht) hab, funktionieren perfekt für CBR...und/oder steigen bei der "Erkennung" von VBR aus oder geben einfach nur Käse aus...
(Eben "ABR" gelesen...gibts das auch noch?)
Ohne jetzt den exakten Aufbau des MP3-Datenformats zu kennen: VBR bedeutet "variable Bitrate" und damit kann sich diese während des Abspielens ständig ändern. Das heißt, du musst nicht nur im Header nachschauen, sondern das ganze File nach entsprechenden Datenstrukturen scannen.

Zitat:
Die einzige Möglichkeit die funktionierte war getID3..aber..will ich nicht/mag ich nicht/neeee...
Was ist daran so eklig, dass du eine Abneigung dagegen entwickelt hast?

Zitat:
Aus Verzweiflung versuche ich mir gerade den Header einer MP3 Datei näher zu bringen um ein eigenes Script zu kreieren..

Was mich aber zu meinem nächsten Problem führt, die BPM.
Gibt es eine Möglichkeit diese aus einer vorliegenden MP3 zu berechnen (PHP) oder ist hierzu schlichtweg der ID3 Tag von Nöten?!
Der ID3-Eintrag könnte lügen, schließlich könnte man da jeden beliebigen Wert eintragen.

BPM heißt, wenn ich mich recht erinnere, "beats per minute". Die kannst du im Bestfall durch Tiefpassfilterung der abgespielten Musikdaten und anschließende Analyse des Filtrats zählen. Ich könnte dir eine elektronische (Analog-)Schaltung bauen, die das leistet. Aber in Software, noch dazu in einer lahmen Scriptsprache, die sich mit Binärdaten schwer tut, wird das kompliziert (wenn auch nicht unmöglich). Zumindest das Filtern könnte man eventuell den Blurring-Filtern oder der Resampling-Funktion der LibGD aufhalsen (solcherart Hacks gefallen mir ). Aber die Peak-Detektion hat was mit Frequenz-Analyse und höherer Mathematik zu tun, damit tue ich mich etwas schwer.

Beispiel-Sources, die das richtig machen, dürftest du in quelloffener Audiosoftware finden. Vielleicht hat Audacity oder eines seiner Plugins einen solchen Zähler?

*nachträglich_einschieb*

Zuerst muss man das MP3 natürlich dekodieren|entkomprimieren. Das würde mit PHP allein sicher ziemlich lange dauern. Man kann aber externe Tools, wie LAME damit beauftragen.

Was Google so ausspuckt:

BeatDetector

(Der Link dort auf gamedev.net ist kaputt. Die richtige URL dürfte die hier sein:
Beat Detection Algorithms

http://www.flipcode.com/misc/BeatDet...Algorithms.pdf (PDF)

Mixxx | Download

BpmDj, a Free Linux DJ Tool

BPM Detection Library - Documentation
Scheint eine DLL zu sein, die man von verschiedenen Sprachen aus nutzen kann. Leider zeigt die Download-Page einen Parse-Fehler.

alle via: BPM Detection information

Geändert von fireweasel (09-01-2012 um 23:54 Uhr) Grund: links ergänzt
Mit Zitat antworten
  #3 (permalink)  
Alt 14-01-2012, 03:48
JonasBauer
 Registrierter Benutzer
Links : Onlinestatus : JonasBauer ist offline
Registriert seit: Jan 2012
Beiträge: 5
JonasBauer befindet sich auf einem aufstrebenden Ast
Standard

Verspäteten Dank und an dich fireweasel.

Zitat:
Die kannst du im Bestfall durch Tiefpassfilterung der abgespielten Musikdaten und anschließende Analyse des Filtrats zählen. Ich könnte dir eine elektronische (Analog-)Schaltung bauen, die das leistet. Aber in Software, noch dazu in einer lahmen Scriptsprache, die sich mit Binärdaten schwer tut, wird das kompliziert (wenn auch nicht unmöglich). Zumindest das Filtern könnte man eventuell den Blurring-Filtern oder der Resampling-Funktion der LibGD aufhalsen (solcherart Hacks gefallen mir ). Aber die Peak-Detektion hat was mit Frequenz-Analyse und höherer Mathematik zu tun, damit tue ich mich etwas schwer.
Alles Wörter die ich nicht verstehe

Ich weiß nicht ob dass falsch verstanden wurde, aber mit der Einschränkung "PHP" hätte auch ein Aufrufen einee CLI-Software gemeint sein können (siehe BPM).
So weit wie du dich da auszukennen scheinst, mag ich garnicht gehen

Das BPM "Problem" ist in der Zwischenzeit gelöst worden.
(Externes Programm speichert (im Vorfeld) einen Tag der dann ausgelesen wird)

Mit dem MP3 Header bin ich noch nicht wirklich weiter, bin aber auch noch nicht dazu gekommen weiterzusuchen.
Hast du da vllt Erfahrung drin? Ich verstehe nicht ganz wie man aus einer variablen, sich stetig ändernden Bitrate nachher einen "festen" Wert bekommt (Durchschnitt?, bcdiv(Größe,Länge,0)? oder wie?).
Aber wie gesagt, bin bisher nicht mehr zum googlen diesbezüglich gekommen.


Wollte mich nur nochmal kurz melden & bedanken, ich hasse Posts die vom Threadersteller nach "Lösung" des Problems unbeantwortet bleiben^^

Bis dahin (in der Hoffnung auf jemand der vllt noch einen Tipp für mich hat)
Grüße

Jonas

Geändert von JonasBauer (14-01-2012 um 03:52 Uhr) Grund: Schlechtschreibung
Mit Zitat antworten
  #4 (permalink)  
Alt 14-01-2012, 04:55
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

VBR bedeutet lediglich, dass jeder Frame eine andere Bitrate haben kann. Da aber jeder Frame aus einem Frame-Header und einem Datenblock besteht und der Header die Bitrate für den Frame angibt, kannst du die Datei Frame für Frame einlesen und die einzelnen Bitraten erfassen. Wie du die dann verrechnest (z. B. Durchschnittswert bilden), bleibt dir überlassen.

ABR ist im Prinzip das gleiche wie VBR: Die Bitrate für jeden Frame ist unterschiedlich. Bei VBR komprimiert der Encoder die Datei wie es ihm gerade passt oder innerhalb eines festlegbaren Min-Max-Intervalls. Bei ABR kann man die durchschnittliche Bitrate (average bit rate) angeben und der Encoder macht einen Analysedurchlauf (first pass), um dann im zweiten Durchlauf exakt diesen Durchschnittswert zu erreichen. Der Gegensatz zu VBR besteht also grob gesagt lediglich darin, dass bei VBR die Durchschnitts-Bitrate nur von der fertigen Datei ermittelt werden kann, während sie bei ABR schon vor dem Komprimieren festgelegt ist. Auslesen musst du sie trotzdem genauso wie bei VBR.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (14-01-2012 um 05:03 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 20-01-2012, 14:14
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von JonasBauer Beitrag anzeigen
Verspäteten Dank und an dich fireweasel.

Alles Wörter die ich nicht verstehe
Ja, ich hätte auch verständliche Wörter benutzen können. Blurring bspw. heißt auf Deutsch Weich-Zeichner, Peaks sind Spitzenwerte usw. Mir fällt nicht immer sofort die passende Vokabel ein. Oft findet man aber mit einer Wikipedia|Wiktionary-Suche eine Erläuterung.

Zitat:
Das BPM "Problem" ist in der Zwischenzeit gelöst worden.
(Externes Programm speichert (im Vorfeld) einen Tag der dann ausgelesen wird)
Klar, das ist die einfachste Lösung.

Wenn die Musikstücke einem größerem Publikum bekannt sind, könnte man auch einen Tagger drüberlaufen lassen und mit dem ermittelten Hashwert eine Online-Datenbank befragen, die BPM-Werte in ihrer Meta-Daten-Sammlung hat.

Zitat:
... Ich verstehe nicht ganz wie man aus einer variablen, sich stetig ändernden Bitrate nachher einen "festen" Wert bekommt (Durchschnitt?, bcdiv(Größe,Länge,0)? oder wie?).
Ich würde Frame für Frame durchgehen und den Minimal-Wert und den Maximalwert speichern. Sind beide gleich groß, handelt es um eine konstante Bitrate. Was ein Durchschnitt ist, darüber streiten sich die Mathematiker. Falls der gewünscht ist, würde ich den Median-Wert nehmen. Der dürfte dem allgemeinüblichen Verständnis der durchschnittlichen Datenrate am nächsten kommen.

Zitat:
..., ich hasse Posts die vom Threadersteller nach "Lösung" des Problems unbeantwortet bleiben^^ ...
Sehr löbliche Einstellung. Keiner ist erfreut, nach vermeintlich erfolgreichem "Ergooglen" einer Problemlösung so etwas wie "Problem wurde gelöst. Lösung behält der Threadersteller für sich" zu lesen ...
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
bitrate, bpm, cbr, mp3, vbr


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mp3 abspielen über src=mp3.php?id=1 webINspirit PHP Developer Forum 10 12-10-2010 10:40
Zwei Mp3 zu einer Mp3 zusammenfügen (z.b.php) Railroad24 PHP Developer Forum 17 26-09-2004 19:31
Header Probleme meik75 PHP Developer Forum 10 08-02-2004 20:09
MP3 Header einlesen !! (problem) DarkMight0 PHP Developer Forum 14 01-02-2003 21:58

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:06 Uhr.