Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mediaplayer Length und Position werden falsch dargestellt (https://www.delphipraxis.net/118289-mediaplayer-length-und-position-werden-falsch-dargestellt.html)

Poseidon 4. Aug 2008 19:38


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:
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;
noch
Delphi-Quellcode:
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;
Futz. Was mach ich falsch? Vielen dank im voraus.

mfg Poseidon

SirThornberry 4. Aug 2008 19:41

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.

Poseidon 4. Aug 2008 19:59

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?

SirThornberry 4. Aug 2008 20:10

Re: Mediaplayer Length und Position werden falsch dargestell
 
Mit folgenden Zeilen kannst du das Format auf ms umstellen:
Delphi-Quellcode:
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));
wobei fDevID das Handle des geöffneten Gerätes ist (entspricht dem Property Handle des TMediaplayer).
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 04:40 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