Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TMediaPlayer Loop (https://www.delphipraxis.net/195478-tmediaplayer-loop.html)

Demyxa 3. Mär 2018 11:32

TMediaPlayer Loop
 
Ich hab das Forum durchstöbert, konnte aber leide keine Lösung finden.
Mein MediaPlayer läuft 5 Minuten, soll aber in einer Endlosschleife laufen.

Code:
procedure TForm1.Label18Click(Sender: TObject);
var
BATK : Real;
begin
  if MediaPlayer1.Position=MediaPlayer1.EndPos then  //abfrage ob der Player beim Ende ist
  begin
  MediaPlayer1.FileName:=OpenDialog1.FileName;
  MediaPlayer1.Open;
  MediaPlayer1.Play;
  end;
ist das was ich im Moment nutze, jedoch ist es weder eine Endlosschleife sondern einfach ein "zweiter Playbutton"
und dazu auch noch nicht mal funktional.

Ich hatte eine permanente Abfrage Schleife im Kopf, jedoch hab ich schlechte Erfahrungen
mit diesen und schrecke vor der Idee eher zurück.

Und das Ding 20-Mal in Audacity zu loopen wäre einfach nur meh.

HolgerX 3. Mär 2018 15:46

AW: TMediaPlayer Loop
 
Hmm..

Unter D6 hat der MediaPlayer ein OnNotyfy..
Wird aufgerufen, wenn ein Statuswechsel stattgefunden hat.
Somit müsstest Du dort nur bei Status 'STOP' das Video wieder starten..

Demyxa 3. Mär 2018 17:42

AW: TMediaPlayer Loop
 
Das würde als Code wie exakt aussehen? :wiejetzt:

HolgerX 3. Mär 2018 18:44

AW: TMediaPlayer Loop
 
Hmm..

(OK, Hintern hinter her tragen ;) )

So gehts bei D6:

Delphi-Quellcode:
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
var
  MP : TMediaPlayer;
begin
  MP := TMediaPlayer(Sender);

  if (MP.Mode = mpStopped) and (MP.Position = MP.Length) then //abfrage ob der Player beim Ende ist
  begin
    MP.Open;
    MP.Play;
  end;
  { Beachten Sie, daß die Eigenschaft Notify auf True gesetzt werden muß, }
  { damit bei der nächsten Modusänderung }
  { eine Benachrichtigung erfolgt. }
  MP.Notify := True;
end;
Wenn der Player am Ende angekommen ist und dort Stopt, wird OnNotify aufgerufen...
Damit dies nur beim Erreichen des Ende zu einem Neustart kommt, dort die Position abfragen.
Da bei mir bei MP.End immer 0 steht, mache ich das mit MP.Length.

Der '{Beachten...}' Kommentar kommt aus dem D6 Beispiel-Src...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 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