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 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 ?