#1 22.04.2008 18:28:04

DragonFlyOfGold
ProMember
Ort: Berlin
Registriert: 09.11.2005
Beiträge: 139

Länge einer MP3/OGG Datei ermitteln

Hi,

ich programmiere gerade mittels Squallsound und DirectSound eine umfangreichere Soundunit für Delphi. Mein Problem ist jetzt, dass ich nicht weiß, wann eine Datei zu ende ist, also fertig abgespielt wurde. Eine entsprechende Funktion/Variable habe ich nicht in Squall gefunden.

Mein Ansatz ist jetzt folgender:
   1. Ich lese die Länge (Spieldauer) der Datei aus.
   2. ich spiele die Datei ab und starte einen Timer
   3. der Timer löst ein Event aus -> die Datei ist zuende und die nächst kann abgespielt werden

Mein Problem: Ich habe keine Ahnung wie ich die Länge aus der Datei auslesen kann. Mit dem TMediaplayer könnte ich zwar '*.Mp3' Dateien auslesen, aber keine '*.Ogg' oder? Und ich hab keine Ahnung wie ich den TMediaplayer ohne VCL intialisieren kann. Meine Versuche sind immer mit einer Exception gescheitert (aber erst beim Öffnen einer Datei, nicht beim erstellen).

Vielen Dank für die Hilfe
   Mfg Martin Lange

Beitrag geändert von DragonFlyOfGold (22.04.2008 18:33:08)

Offline

 

#2 16.06.2008 15:42:02

TheDon
Member
Registriert: 14.01.2006
Beiträge: 32

Re: Länge einer MP3/OGG Datei ermitteln

Hallo!

Das Format von OGG bzw. Vorbis kenne ich nicht. MP3 besteht aus vielen unabhängigen einzelnen Frames. Jeder Frame besteht aus einem Header mit den Infos über Bitrate, etc. gefolgt von den komprimierten Daten. Jedes MP3 Frame beinhaltet aber Information für die selbe Zeitdauer, d.h. jedes Frame ist x [ms] lang. Du müsstest die Anzahl der korrekten Frames in einem MP3 File parsen und das mit der Framedauer multiplizieren. Diese Methode ist unabhängig von ID3v? oder anderen Zusatzinformationen in MP3 Dateien. Es ist dabei nicht notwendig die Datei nach dem MP3 Standard zu dekodieren, sonder es gilt nur die Frameheader zu verarbeiten.

Ich kenne Squallsound nicht, Aber gibt es nicht die Möglichkeit ein Event zu erhalten, wenn der Abspielbuffer leer wird. Daraus kann man dann auch schließen, dass die Datei zu ende ist.


TheDon

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson