![]() |
Mediaplayer Length und Position werden falsch dargestellt
Hallo Delphianer,
in meinem Media soll dei Position und Length dargestellt werden. Ihrgendwie kommen aber seltsame Ergebnisse heraus, z.B. 2(min) 214(sek) oder 4576(sek). Weder
Delphi-Quellcode:
noch
type
HMSRec = packed record Hours: byte; Minutes: byte; Seconds: byte; NotUsed: byte; end; {...} procedure TForm1.Timer12Timer(Sender: TObject); var TheLength: LongInt; ThePos2:LOngint; begin If Mediaplayer1.Mode = mpplaying then begin MediaPlayer1.TimeFormat := tfHMS; TheLength := Mediaplayer1.Length; with HMSRec(TheLength) do begin Label21.Caption := IntToStr(minutes); Label22.Caption := IntToStr(Seconds); end; ThePos2 := Mediaplayer1.Position; with HMSRec(ThePos2) do begin Label24.Caption := IntToStr(minutes); Label26.Caption := IntToStr(Seconds); end; end; end;
Delphi-Quellcode:
Futz. Was mach ich falsch? Vielen dank im voraus.
type
HMSRec = record Hours: byte; Minutes: byte; Seconds: byte; NotUsed: byte; end; {...} procedure TForm1.Timer12Timer(Sender: TObject); var TheLength: LongInt; ThePos2:LOngint; begin If Mediaplayer1.Mode = mpplaying then begin Mediaplayer1.TimeFormat := tfmilliseconds; TheLength := Mediaplayer1.Length; with HMSRec(TheLength) do begin Label21.Caption := IntToStr(thelength div 60000); Label22.Caption := IntToStr(thelength mod 60000); end; ThePos2 := Mediaplayer1.Position; with HMSRec(ThePos2) do begin Label24.Caption := IntToStr(thepos2 div 60000); Label26.Caption := IntToStr(thepos2 mod 60000); end; end; end; mfg Poseidon |
Re: Mediaplayer Length und Position werden falsch dargestell
Es ist eine Fehlannahme das Length und Position ms sind. Abhängig vom codec ist auch die Einheit von Position und Length. Es können Frames sein, Sekunden etc.
Wenn man direkt mit mci Befehlen arbeitet kann man direkt die Länge in ms abfragen. |
Re: Mediaplayer Length und Position werden falsch dargestell
Danke für die schnelle Antwort :-D
Wie setze ich das mit meinem Code so um das es in meinem Mediaplayer richtig funktioniert? |
Re: Mediaplayer Length und Position werden falsch dargestell
Mit folgenden Zeilen kannst du das Format auf ms umstellen:
Delphi-Quellcode:
wobei fDevID das Handle des geöffneten Gerätes ist (entspricht dem Property Handle des TMediaplayer).
var
lSetParms : TMCI_Set_Parms; begin ZeroMemory(@lSetParms, SizeOf(lSetParms)); lSetParms.dwTimeFormat := Cardinal(MCI_FORMAT_MILLISECONDS); mciSendCommand(fDevID, MCI_SET, MCI_WAIT or MCI_SET_TIME_FORMAT, Cardinal(@lSetParms)); Vielleicht gibt es beim TMediaplayer auch eine Eigenschaft um das einzustellen. Da ich selbst direkt mit den MCI-Funktionen gearbeitet habe kenne ich mich da nicht so genau aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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