Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TrackBar - MediaPlayer Problem (https://www.delphipraxis.net/18714-trackbar-mediaplayer-problem.html)

iamjoosy 23. Mär 2004 15:54


TrackBar - MediaPlayer Problem
 
Hi,
Ich nutze die TactiveMovie Komponenete von Datastead um ein Video abspielen zu können.
Nun habe ich Eine Trackbar hinzugefügt, um in dem Video vor und zurückzuspulen. Gleichzeitig soll die Trackbar aber auch mit dem Video "mitlaufen", was ich in einem "OnPositionChange event" der TactiveMovie Komponente mache:

Delphi-Quellcode:
Trackbar1.Position:=NewFramePosition;
Das Problem ist jetzt aber, dass die Positionsveränderung der Trackbar den ActiveMovie-Player völlig aussbremst, so dass die Framerate erheblich absinkt.
Hat iregendjemand von euch dazu eine Idee warum das so ist, bzw. wie man dem Abhilfe verschaffen kann ?

Vielen Dank schonmal.

mirage228 23. Mär 2004 15:57

Re: TrackBar - MediaPlayer Problem
 
Du musst mit der Trackbar ja nicht jeden Frame anzeigen. Du könntest jeden 25. nehmen z.B. das wäre in den meisten Fällen immer doch noch eine Sekunde.

mfG
mirage228

himitsu 23. Mär 2004 16:17

Re: TrackBar - MediaPlayer Problem
 
Such mal nach Hier im Forum suchenTrackBar MediaPlayer,

oder nimm meinen Code - siehe TrackBar OnMouse Event (mein 2./letzter Beitrag)
Da wird die TrackBar nicht direkt von der Player-Komponente gesteuert, sondern über einen Timer (z.B. alle 0,3 - 1 Sekunde(n) aktualisiert).

iamjoosy 23. Mär 2004 16:22

Re: TrackBar - MediaPlayer Problem
 
@mirage

Danke für die schnelle Antwort ... das habe ich auch schon asuprobiert, aber dann stolpert der Player eben jedes 25 Frame, was auch nicht schön ist. Ich wundere mich nur, warum das neuzeichnen der Trackbar offensichtlich soviel Zeit beansprucht .....

@himitsu
Ich fürchte auch bei einer Timer - Lösung ist das Problem nicht wirklich gelöst ...
siehe mein Wundern oben ...

Gandalfus 23. Mär 2004 19:05

Re: TrackBar - MediaPlayer Problem
 
einfach eine flag benutzen. Das Thema haben wir aber schon ausführlich behandelt! Also suchen!

himitsu 23. Mär 2004 19:21

Re: TrackBar - MediaPlayer Problem
 
@iamjoosy
wieso nicht? das der Timer unabhängig vom Player läuft, bremst er den Player auch nicht aus.

Bei uns hat das Zeichnen der Trakbar den Player nicht gestört.
Gib mal ein bissl Code, wie das jetzt gelöst ist. Eventuell ist da ja auch nur ein Fehler drin.

mirage228 23. Mär 2004 19:27

Re: TrackBar - MediaPlayer Problem
 
Meine Annahme ist, dass er ein OnChange Ereignis für die Trackbar gesetzt hat, sodass bei jeder Trackbar-Änderung der Frame neu gesetzt wird, was natürlich ausbremst.
Daher würde ich beim setzten durch das Programm eine Boolean Variable setzen, dass dann bei der Änderung der Trackbar der Wert für den Frame neu gesetzt wird. Danach muss der "Flag" wieder abgeschaltet wird (sprich die Boolean Variable auf False), damit der Frame durch Nutzerinteraktion wieder gesetzt werden kann.

mfG
mirage228

himitsu 23. Mär 2004 20:34

Re: TrackBar - MediaPlayer Problem
 
Ich hatte mir das Flag gespart und es etwa so gelöst:

Delphi-Quellcode:
If ABS(TrackBar.Position - MediaPlayer1.Position) > X Then MediaPlayer1.Position := TrackBar.Position

iamjoosy 25. Mär 2004 10:55

Re: TrackBar - MediaPlayer Problem
 
Hi an alle und sorry, dass ich erst jetzt antworte, war aber gestern auf einer Konferenz.

@mirage
Stimmt, ich nutze ein OnChange Ereignis um den Player zu steuern ... das ist aber kein Problem und funktioniert acuh so wie ich das wünsche. Mein Problem war(ist) genau anders herum: Der Player läuft und ich will die Trackbar verschieben. Also in Pseudo-Code ungefähr so:

Delphi-Quellcode:
onNewFrame
  Trackbar.Position:=NewFramePosition
@himitsu
Die Lösung hatte ich auch schon mal. Mein Problem ist (wahrscheinlich) dass ich nicht verstehe wieso das Neuzeichnen der Trackbar zu jedem Frame nicht gehen soll - das kann doch nicht soviel Resourcen brauchen ... oder ? Aber wahrscheinlich geht es eben doch nur jedes 20-25 Frame. Da muss ich eben noch ein bissel Zusatzcode Programmieren, so dass bei jedem Stop/Pause die Trackbar immer auf die aktuelle Position gesetzt wird.

Aber nochmals: Vielen Dank für eure schnelle und kompetente Hilfe

Und P.s.: Natürlich habe ich vorher die DP dursucht um eine Lösung für mein Problem zu finden und habe da auch einiges zum Thema gefunden ... eben nur nicht die Antwort dass es nicht geht bei jedem neuen Frame die Trackbar neu zu zeichnen.


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