Schleife während Abspielen eines Videos
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40
Schleife während Abspielen eines Videos
Hi,
ich habe eine Frage zum Abspielen eines Videos:
Ich habe einen Video mit "LoadMovie" geladen und spiele ihn in einem rahmenlosen Fenster ab. Das funktioniert eigentlich super aber ich möchte das Programm so lange anhalten, bis der Film abgelaufen ist. Dies ist mir trotz der unterschiedlichsten Versuche nicht gelungen. Entweder der Film wurde sofort abgebrochen und das Programm fortgesetzt oder nach Ende des Films ging es nicht weiter oder der Film wurde garnicht erst abgespielt.
Nun habe ich es so implementiert, dass eine Schleife die Anzahl der Sekunden wartet (über "ElapsedMilliseconds"), die der Film lang ist. Das geht meistens, nur bei langsameren Systemen, wo der Film ein wenig ruckelig läuft, sind diese Sekunden abgelaufen, bevor der Film wirklich durch ist und er wird hinten abgekappt.
Gibt es da eine bessere Lösung?
Greetz,
CptGreenwood
ich habe eine Frage zum Abspielen eines Videos:
Ich habe einen Video mit "LoadMovie" geladen und spiele ihn in einem rahmenlosen Fenster ab. Das funktioniert eigentlich super aber ich möchte das Programm so lange anhalten, bis der Film abgelaufen ist. Dies ist mir trotz der unterschiedlichsten Versuche nicht gelungen. Entweder der Film wurde sofort abgebrochen und das Programm fortgesetzt oder nach Ende des Films ging es nicht weiter oder der Film wurde garnicht erst abgespielt.
Nun habe ich es so implementiert, dass eine Schleife die Anzahl der Sekunden wartet (über "ElapsedMilliseconds"), die der Film lang ist. Das geht meistens, nur bei langsameren Systemen, wo der Film ein wenig ruckelig läuft, sind diese Sekunden abgelaufen, bevor der Film wirklich durch ist und er wird hinten abgekappt.
Gibt es da eine bessere Lösung?
Greetz,
CptGreenwood
Re: Schleife während Abspielen eines Videos
was heißt in diesem Fall 'anhalten'? Möchtest Du, dass keineCptGreenwood hat geschrieben:aber ich möchte das Programm so lange anhalten, bis der Film abgelaufen ist.
Benutzereingaben (Buttonklick, etc.) gemacht werden?
Grüße ... Kiffi
a²+b²=mc²
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40
Re: Schleife während Abspielen eines Videos
Nein, keine Benutzereingaben. Anhalten soll hier wirklich anhalten heißen. Der Film soll ganz ablaufen und anschließend das Programm (ist ein Vollbildspiel, keine Windows-GUI) fortgesetzt werden. Hinbekommen habe ich es, wenn ich das Fenster nicht rahmenlos, sondern mit Titelleiste anzeige und auf das Schließen-Ereignis prüfe aber das möchte ich eigentlich nicht, dass soll von selbst gehen.
Re: Schleife während Abspielen eines Videos
mh, mit Spielen kenne ich mich leider nicht so gut aus. Hier mal derCptGreenwood hat geschrieben:(ist ein Vollbildspiel, keine Windows-GUI)
Versuch, das mit 'normalen' Fenstern zu machen. Vielleicht kann
Dich das inspirieren:
Code: Alles auswählen
InitMovie()
myMovieFile.s = "C:\Program Files\Microsoft Visual Studio\MSDN98\98VSa\1031\SAMPLES\VID98\content\mmedia\GLOBE.AVI"
myMovie = LoadMovie(#PB_Any, myMovieFile)
If myMovie = 0
; Meldung
Debug "Konnte Movie nicht laden. Programm wird beendet"
; Programmende
End
EndIf
#Window1 = 0
#Window2 = 1
; erste Fenster öffnen. hier wird das movie abgespielt
OpenWindow(#Window1, #PB_Ignore, #PB_Ignore, 300, 300, "Window1")
PlayMovie(myMovie, WindowID(#Window1))
; warten, bis das movie abgespielt wird
Repeat
While WindowEvent() : Delay(1) : Wend
Until MovieStatus(myMovie) > 0
Repeat
WWE = WaitWindowEvent(100)
If WWE = 0
If IsWindow(#Window2) = 0
If MovieStatus(myMovie) = 0 ; wenn movie nicht mehr abgespielt wird
; Fenter 2 öffnen
OpenWindow(#Window2, #PB_Ignore, #PB_Ignore, 200, 200, "Window2")
; 'Moviefenster' schliessen
CloseWindow(#Window1)
EndIf
EndIf
Else
If WWE = #PB_Event_CloseWindow
If EventWindow()=#Window2
Quit = #True
EndIf
EndIf
EndIf
Until Quit = #Truea²+b²=mc²
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Schleife während Abspielen eines Videos
Hier meine Version
(naja, meine Mühe soll ja nicht ganz umsonst gewesen sein, auch wenn Peter schneller war
)
Gruß
Thomas
Code: Alles auswählen
InitNetwork()
Define event
If ReceiveHTTPFile("http://www.blitzbasement.net/bank/aliensong.mpeg", GetTemporaryDirectory() + "aliensong.mpeg")
If InitMovie() And LoadMovie(0, GetTemporaryDirectory() + "aliensong.mpeg")
OpenWindow(0, 0, 0, MovieWidth(0), MovieHeight(0), "blub", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
PlayMovie(0, WindowID(0))
While MovieStatus(0) <= 0 : Delay(10) : Wend; warten bis movie läuft
Repeat
event = WaitWindowEvent(20)
If MovieStatus(0) <= 0; movie zuende, also löschen und weiter im text
Break
EndIf
ForEver
DeleteFile(GetTemporaryDirectory() + "aliensong.mpeg")
EndIf
EndIfThomas
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40
Re: Schleife während Abspielen eines Videos
Danke für den Code aber ich glaube, das funzt bei mir nicht, denn ich benutze kein zweites Fenster, sondern das Game läuft dann im FullScreen.
So ist's momentan:
Habe es mal mit dem Schleifenteil deines Beispielcodes versucht:
Leider sieht man das Videofenster nur den Bruchteil einer Sekunde, dann isses weg und das Programm läuft weiter.
So ist's momentan:
Code: Alles auswählen
InitMovie()
LoadMovie(0, "film.avi")
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "Intro", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
PlayMovie(0, WindowID(0))
timer = ElapsedMilliseconds()
Repeat
Until ElapsedMilliseconds() - timer >= 21000
StopMovie(0)
CloseWindow(0)
OpenScreen(1024, 768, 32, "Game")
;...und so weiter
Code: Alles auswählen
InitMovie()
LoadMovie(0, "film.avi")
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "Intro", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
PlayMovie(0, WindowID(0))
Repeat
While WindowEvent() : Delay(1) : Wend
Until MovieStatus(0) = 0
CloseWindow(0)
OpenScreen(1024, 768, 32, "Game")
;...und so weiter
- NicTheQuick
- Ein Admin
- Beiträge: 8812
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Schleife während Abspielen eines Videos
Hey, der ist aber doch auch schon uralt, oder?ts-soft hat geschrieben:Code: Alles auswählen
..."aliensong.mpeg"...
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40
Re: Schleife während Abspielen eines Videos
Danke für eure Hilfe, zusammen mit den kleinen Änderungen von ts funzt es jetzt! 
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Schleife während Abspielen eines Videos
Zeitlos schönNicTheQuick hat geschrieben:ts-soft hat geschrieben:Hey, der ist aber doch auch schon uralt, oder?
(wollte nichts lokales nehmen, was evtl. nicht bei jedem vorhanden ist)