![]() |
TMediaPlayer - Length und Position
Nach
Delphi-Quellcode:
rufe ich mit
MediaPlayer.FileName:=DateiName; // .mp3 Datei
MediaPlayer.Open; MediaPlayer.TimeFormat:=tfMilliseconds;
Delphi-Quellcode:
die Länge des zu spielenden Stückes auf.
MediPlayer.Length
Für einen Song der ca. 100 s lang ist erhalte ich als Resultat 199307 ms, also fast doppelt soviel Rufe ich dagegen während des Abspielens mit
Delphi-Quellcode:
die bereits
MediaPlayer.Position
abgespielte Zeit auf kommen korrekte Werte. (allerdings, am Ende des Abspielens liefert auch .Position die og 199307 ms.) Auch bei anderen Stücken liefert
Delphi-Quellcode:
falsche Werte, aber nicht konstant doppelt so hohe, verglichen mit der tatsächlichen Länge.
MediaPlayer.Length
Der Fehler scheint nicht in den .mp3-Dateien zu liegen, denn im Windows Explorer werden die tatsächlichen Längen richtig angegeben. Kennt jemand das Problem - und die Lösung des Problems ? |
AW: TMediaPlayer - Length und Position
Das von mir zuletzt gepostete Bsp ;)
![]() Das liegt nicht an der mp3 Datei, das liegt daran das die Codecs da unterschiedliche Werte in Pott hauen... |
AW: TMediaPlayer - Length und Position
@lbccaleb:
Danke, hab ich versucht, bringt aber die gleichen falschen Angaben wie TMediaPlayer. Noch einer 'ne Idee. Wie schon gesagt, der Windows Explorer liefert korrekte Angaben, übrigens auch der Windows Media Player. |
AW: TMediaPlayer - Length und Position
Sicher das du denn alles richtig machst??
Weil 3x darfst du raten wers genauso macht wie ich in dem von mir geposteten Bsp.^^ |
AW: TMediaPlayer - Length und Position
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
Ich hab das etwas verändert, weil ich keine Fehlermeldungen haben möchte. Daß etwas nicht funktioniert, sehe ich ja daran, daß der Rückgabewert der Funktion gettimefromfile 0 ist. Aber ich habe natürlich kontrolliert, ob ich einen Fehler eingebaut habe, indem ich die in deinem Upload enhaltene .exe aufgerufen habe, und die bringt den gleichen Rückgabewert, wie die von mir modifizierte Funktion. (siehe anhängende .jpg). Im 2.jpg kannst du sehen, daß der Windows Explorer die korrekte Zeit angibt.
Delphi-Quellcode:
FUNCTION TMain.GetTimeFromFile(FileName:String):Double;
var Duration:Double; wFileName:PWideChar; hr:HRESULT; MediaDet:IMediaDet; begin; MediaDet:=nil; Result:=0; wFileName:=StringToOleStr(FileName); try hr:=CoCreateInstance(CLSID_MediaDet,nil,CLSCTX_INPROC,IMediaDet,MediaDet); if hr<>S_OK then exit; hr := MediaDet.put_Filename(wFileName); if hr<>S_OK then exit; hr:=MediaDet.get_StreamLength(Duration); if hr<>S_OK then exit; result:=duration; finally SysFreeString(wFileName); MediaDet:=nil; end; end; |
AW: TMediaPlayer - Length und Position
kannst du mir die mp3 datei mal bitte zukommen lassen??
|
AW: TMediaPlayer - Length und Position
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Und danke, daß du versuchst zu helfen. |
AW: TMediaPlayer - Length und Position
Ich würde wetten, dass hier die variable Bitrate das Problem ist. Muss es denn so eine Lösung sein, oder geht auch was selbstgemachtes, wie z.B. mit meinen
![]() |
AW: TMediaPlayer - Length und Position
Zitat:
ich habe mir deine MP3Fileutils vor ein paar Tagen heruntergeladen, im ersten Moment nur 'Bahnhof' verstanden und mich anderen Dingen gewidmet. Gestern wollte ich dann doch den Dingen auf den Grund gehen und habe mit Freude gemerkt, daß sich mein Problem verblüffend einfach lösen ließ. Herzlichen Dank
Delphi-Quellcode:
FUNCTION TMain.GetDuration(FileName:String):Integer;
var mpi:TMpegInfo; begin; mpi:=TMpegInfo.Create; result:=-1; try if mpi.LoadFromFile(FileName)=MP3ERR_None then result:=mpi.Duration; finally mpi.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz