AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Mp3FileUtils
Thema durchsuchen
Ansicht
Themen-Optionen

Mp3FileUtils

Ein Thema von Gausi · begonnen am 15. Jun 2006 · letzter Beitrag vom 22. Jun 2013
Antwort Antwort
Seite 3 von 9     123 45     Letzte »    
Benutzerbild von Gausi
Gausi
Registriert seit: 17. Jul 2005
MP3FileUtils, v0.6


Diese Unit liest aus einer MP3-Datei alle (?) gängigen Informationen aus. Wie bei vielen anderen auch wird der ID3v1-Tag gelesen, fast alle Teile des ID3v2-Tags und diverse Informationen über die Datei ansich, wie z.B. Bitrate und Spieldauer.

Download:
  • Mp3FileUtils - Quellcode inkl. der Demoprogramme. Zip-Archiv, ca. 555kb
  • Demos. - Komplilierte Demo-Programme zum Ausprobieren. Zip-Archiv, ca. 1.9mb
  • Zum Thema Unsynchronisation: "Das Gewitterrätsel - Reloaded" (das war mal eine Aufwärmfrage bei einem Gewinnspiel in der Entwickler-Ecke) (Version 1, Version 2) - Wo war das Gewitter? (Tip: beide Varianten mit dem VLC abspielen und am Scrollbalken spielen )

Änderungen in 0.6:
  • Methoden SetRating und SetPersonalPlayCounter zusammengefasst zu SetRatingAndCounter. Der Code in den eigenen Anwendungen muss da ggf. angepasst werden
  • Unterstützung von "Private Frames"
  • Erkennung des VBRI-Header
  • ein paar neue Genres in der Genre-Liste für ID3v1
  • neue Methoden Get/SetUserText, GetAllUsertextFrames
  • ID3v2Tag.ReadfromStream schneller: Tag wird zuerst komplett geladen, aus dem Memorystream dann die Einzelframes
  • Bugfix: Korrektes Lesen von UTF8-kodierten Textframes mit Delphi 2009
  • Bugfix: ExtendedHeader-Größe wurde falsch interpretiert
  • Bugfix: User-definierte Textframes (TXXX) haben eine andere Struktur als normale Textframes
  • Bugfix: Typ-Gemisch bei GetFrameLength behoben
Folgendes leisten die in dieser Unit implementierten Klassen:
  1. TID3v1Tag:
    • Lesen und Schreiben des ID3v1-Tags
    • Unterscheidung von v1- und v1.1-Tags
  2. TMpegInfo:
    • Lesen/Berechnen der MPEG-Informationen eines mp3-Files - z.B. Bitrate, Channelmode, Samplerate, vbr/cbr, Dauer
    • Schnelles Ermitteln der Daten: Auch bei vbr wird die Spieldauer (fast) immer korrekt ermittelt, ohne die ganze Datei lesen zu müssen
  3. TID3v2Tag:
    • Lesen und Schreiben des ID3v2-Tags
    • Unterstützung aller existierenden Versionen: v2.2, v2.3 und v2.4
    • Unterstützung der Standard-Frames wie Titel, Artist, Album
    • Unterstützung einiger weiterer Text-Frames wie orig. Artist, Composer, Mediatype, Encoder
    • Lesen und schreiben von Lyrics, Bildern, Bewertungen, URLs
    • Lesen und schreiben beliebiger Daten
    • Unterstützung von Unsynchronisation, GroupIDs und Datalength-Bytes
    • Unterstützung von Unicode
    • Unbekannte Frames (~ Informationsfelder) im Tag bleiben erhalten
Für Details verweise ich auf die beiliegende Dokumentation und die verschiedenen Demoprojekte.

Evtl. benötigte Zusatzkomponenten/Units:
Nur für Delphi 2007 oder früher. Verwendung kann in der Datei Config.inc geändert werden.Für Fehlermeldungen oder Codeoptimierungen bin ich jederzeit offen - hier im Thread, per PN oder per Mail.

Edit: Text an die neue Version angepasst.
The angels have the phone box.

Geändert von Gausi (30. Jun 2011 um 19:37 Uhr)
 
Benutzerbild von Gausi
Gausi

 
Delphi 11 Alexandria
 
#21
  Alt 5. Mai 2009, 06:57
Hm, meine Unit sagt mir bei diesem Link auch 4:30 (bzw. 271 sec, aber ich weiß da grade nicht genau, wie genau die Millisekunden gerundet werden. ) Aber: die sind nicht 320kbit/s kodiert, sondern mit einer variablen Bitrate. Werden bei dir auch mit den originalen Versionen fehlerhafte Infos ausgegeben, oder liegt das an deiner Modifikation?

Auch die anderen Dateien, die du in der Mail verlinkt hast, werden sowohl in meinem Player, als auch in dem Testprogramm richtig erkannt. Mit einer einzigen Ausnahme. Und da steckt kein Xing-Header drin, sondern ein VBRI-Header, der mir bisher nicht bekannt ist. In Muetze1's Lib wird der wohl erkannt und verarbeitet), ich werde mich da mal schlau machen, wie das Ding funktioniert.
  Mit Zitat antworten Zitat
Muetze1
 
#22
  Alt 5. Mai 2009, 08:39
Ich habe mich damals auf diesen Artikel gestützt und das SDK vom Fraunhofer IIS, da der VBRI Tag von deren Encodern kommt.
  Mit Zitat antworten Zitat
SearchBot

 
Delphi 10.2 Tokyo Professional
 
#23
  Alt 7. Mai 2009, 00:39
Ich weiß jetzt nicht, ob meine Modifikation daran schuld ist - den Originalcode kann ich in Delphi4 nicht nutzen, weil der Compiler keine Mengen mit Initialwert (hier fett) kennt (also zB den Typ TID3v2FrameVersions = (FV_2 = 2, FV_3, FV_4);), darum hab ich dies Ding einfach erweitert, und dabei warscheinlich kaputtgedacht (aber wie hätte ich das sonst auf FV_2=2 bringen sollen? ...

Die Bitraten hat mir WinXp beim Draufzeigen auf das Mp3 gezeigt, ob variabel oder nicht hat mir Windows nicht angezeigt ;(

Hier meine Mods für Delphi4 angehängt (basiert auf der v0.4):
Angehängte Dateien
Dateityp: zip gausi_778.zip (41,4 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#24
  Alt 7. Mai 2009, 01:05

TID3v2FrameVersions = (FV_dummy0, FV_dummy1, FV_2, FV_3, FV_4);
  Mit Zitat antworten Zitat
Satty67

 
Delphi 2007 Professional
 
#25
  Alt 7. Mai 2009, 07:54
Zitat von himitsu:
TID3v2FrameVersions = (FV_dummy0, FV_dummy1, FV_2, FV_3, FV_4);
Funktioniert nicht, hatte auch versucht die MP3FileUtils auf D5 so anzupassen. Da wird auch noch die größe der Aufzählung irgendwo abgefragt... ist nur schon zu lange her und der Code liegt daheim irgenwo rum

Aber von Dir kam in einem anderen Thread ein Vorschlag der funktioniert:

FV_2, FV_2 etc. als Konstanten deklarieren und TID3v2FrameVersions als Word oder Byte...
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

 
Delphi 11 Alexandria
 
#26
  Alt 7. Mai 2009, 09:35
@muetze1: Danke, werde mir das mal anschauen. Der Herr Gugl hat mir die Seite auch schon empfohlen.

@TID3v2FrameVersions: Daran dürfte die falsche Längenerkennung aber nicht liegen. Die Dauer hat ja mit dem ID3-Tag nichts zu tun. Was da genau schief geht, kann ich mangels vorhandener D4/D5-Installation leider nicht sagen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#27
  Alt 7. Mai 2009, 09:55
eventuell sind dann die Größen einiger Typen unterschiedlich, weßhalb dann was nicht mehr richtig gelesen wird?

von der Definition her und unter ignorieren der Dummy-Werte ist beides eigentlich identisch
Delphi-Quellcode:
TID3v2FrameVersions = (FV_2=2, FV_3, FV_4);
TID3v2FrameVersions = (FV_dummy0, FV_dummy1, FV_2, FV_3, FV_4);
Jetzt kann nur noch des/der Enums und Recordausrichtung unterschiedlich sein.
  Mit Zitat antworten Zitat
Satty67

 
Delphi 2007 Professional
 
#28
  Alt 7. Mai 2009, 10:59
gleich ein paar Zeilen drunter wird bei der Dummy-Declarierung hier gemeckert:
const TFrameFlagValues : Array [TID3v2FrameVersions] of Array [TFrameFlags] of Byte = Man muss halt mehr anpassen. Das setzen der Dummys alleine reicht nicht aus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#29
  Alt 7. Mai 2009, 11:30
joar, entweder noch 2 Dummy Bytes hinten mit rein, oder besser noch

const TFrameFlagValues : Array [FV_2..FV_4]
  Mit Zitat antworten Zitat
Satty67

 
Delphi 2007 Professional
 
#30
  Alt 7. Mai 2009, 11:36
Wird aber als [0..2] gewertet und original Deklaration als [2..4]?

Naja...egal anpassen an Delphi5 (und wohl auch 3/4) geht, man muss halt etwas Handarbeit investieren.

€: Die aktuelle Id3v2Frames.pas ist nicht CR+LF kodiert?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 9     123 45     Letzte »    


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz