Seite 1 von 2

TrackBar + Movie

Verfasst: 05.06.2006 10:28
von sen-me
sen-me hat geschrieben:Ein anderes Problem:
Wie kann ich mittels TrackBar ein Movie steuern?
Also das die Trackbar grade anzeigt welcher Frame gespielt wird hab ich schon, nur klapt es nicht mit dem Trackbar verschieben = Movie spielt an der verschobenen stelle weiter... die trackbar kehrt immer gleich wieder zurück wo das movie war

Verfasst: 05.06.2006 15:39
von Ja!
Kopier mal die Stelle aus Deinem Programm, wo Du die
Trackbar handelst hier her.
Vielleicht machst Du da was falsch..

Verfasst: 05.06.2006 17:18
von roherter

Code: Alles auswählen

pos=getgadgetstate(trackbar)
Ergebnis = MovieSeek(#Movie, pos)


Verfasst: 05.06.2006 18:34
von sen-me

Code: Alles auswählen

If IsMovie(0)
  SetGadgetState(0, MovieStatus(0))
 EndIf

Code: Alles auswählen

If evid = #PB_Event_Gadget
  Select EventGadget()
   Case 0
    MovieSeek(0, GetGadgetState(0))

Verfasst: 05.06.2006 19:23
von winduff
öhm nen bisschen mehr code wäre nützlich, und auch kommentiert... das was da steht... hat meines erachtens nicht viel mit nem movie zu tun

Verfasst: 05.06.2006 19:25
von Ja!
Eventuell setzt Du die Trackbar mit dem SetGadgetState(0, MovieStatus(0))
zurück, bevor das MovieSeek "greifen" kann.
Schau mal genau nach, was zu erst aufgerufen wird.

Gruß

Verfasst: 05.06.2006 22:37
von jear
@sens-me
Ein Trackbar hat einen Maximalwert, der unter 10000 liegen soll.
Nehmen wir ein Video, das genau 10000 Frames hat. Das ließe sich mit einem Trackbar vollständig kontrollieren.
Was aber mit einem Video mit mehr als 10000 Frames?
Was mit einem Video, das weniger als 10000 Frames hat?

Du musst also in Deinen Kontrollmechanismus einbauen:
- setzen des Trackbar-Maximums abhängig von der Länge des Videos
- entsprechende Berechnung einer Relation zwischen Trackbar und Video
- beim Auslesen der augenblicklichen Position aus dem Video die Umrechnung in den entsprechenden Trackbar-Wert für die Anzeige
- beim Schieben des Trackbar's die Umrechnung des ausgelesenen Trackbar-Wertes in die Position im Video

Alles einfache Berechnungen, die aber sein müssen.

Verfasst: 06.06.2006 13:43
von sen-me

Code: Alles auswählen

Repeat
 evid = WaitWindowEvent()
 
 If evid = #PB_Event_Gadget
  Select EventGadget()
   Case 0
    PauseMovie(0)
    MovieSeek(0, GetGadgetState(0))
   Case 2
    file.s = OpenFileRequester("Medie auswählen...", "", pat, 0)
    
    If file
     If IsMovie(0) : FreeMovie(0) : If IsWindow(1) : CloseWindow(1) : EndIf : EndIf
     
     If LoadMovie(0, file) = 0 Or MovieHeight(0) = -1
      Error(1, 3)
     EndIf
     
     DisableGadget(3, 0)
     SetGadgetAttribute(0, #PB_TrackBar_Maximum, MovieLength(0))
    EndIf
   Case 3
    If MovieStatus(0) = 0
     DisableGadget(0, 0)
     DisableGadget(2, 1)
     DisableGadget(4, 0)
     DisableGadget(5, 0)
     DisableGadget(6, 0)
     
     If stopped.b = 0
      If OpenWindow(1, 0, 0, MovieWidth(0), MovieHeight(0), GetFilePart(file), #PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered) = 0
       Error(1, 4)
      EndIf
     EndIf
     
     PlayMovie(0, WindowID(1))
    ElseIf MovieStatus(0) = -1
     ResumeMovie(0)
    Else
     PauseMovie(0)
    EndIf
   Case 4
    StopMovie(0)
    DisableGadget(2, 0)
    stopped.b = 1
   Case 5
    If MovieStatus(0) = -1 : was.b = 1 : ResumeMovie(0) : EndIf
    MovieSeek(0, MovieInfo(0, 0)+MovieStatus(0))
    If was = 1 : was = 0 : PauseMovie(0) : EndIf
   Case 6
    If MovieStatus(0) = -1 : was.b = 1 : ResumeMovie(0) : EndIf
    MovieSeek(0, MovieStatus(0)-MovieInfo(0, 0))
    If was = 1 : was = 0 : PauseMovie(0) : EndIf
  EndSelect
 EndIf
 
 If IsMovie(0) And MovieStatus(0) > 0
  SetGadgetState(0, MovieStatus(0))
 EndIf
Until evid = #PB_Event_CloseWindow
hab ich jetzt...

Wie kann ich die länge des videos herausfinden?
Also ich meine in Sekunden/Minuten

Verfasst: 06.06.2006 18:09
von Ja!
Aus der Hilfe: Laenge = MovieLength(#Movie)

Das ist zwar die Länge in Frames, aber mehr brauchst ja auch gar nicht.

Mit Relation meint Jear: Wenn der User die Trackbar auf (z.B.) 5000 (also die Hälfte) setzt, und der Movie 100000 Frames hat, dann setzt Du den Movie natürlich auf 50000, also auch die Hälfte.

Verfasst: 06.06.2006 18:16
von sen-me
:? und wenn das Movie 10 Frames hat und die Trackbar 100 ?