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
TrackBar + Movie
TrackBar + Movie

Code: Alles auswählen
pos=getgadgetstate(trackbar)
Ergebnis = MovieSeek(#Movie, pos)
Purebasic 5.0 32bit und 64 bit
I'm back from hell
I'm back from hell
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))

@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.
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.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
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
Wie kann ich die länge des videos herausfinden?
Also ich meine in Sekunden/Minuten

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