Seite 2 von 6
Verfasst: 08.11.2008 15:44
von RSBasic
Kann man eigentlich mit FMOD auch Videos streamen?
Verfasst: 08.11.2008 15:59
von Joel
Geil, das geht sogar, hier mein Proggy:
Code: Alles auswählen
Procedure Download()
URLDownloadToFile_(0, "http://test.de/test.wmv", "D:\test.wmv" ,0,0)
Delay (100000)
EndProcedure
If InitMovie() = 0
MessageRequester("Error", "Can't initialize movie playback !", 0)
End
EndIf
aThread = CreateThread(@Download(), 88)
Delay(1000)
If LoadMovie(0, "D:\test.wmv")
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "PureBasic - Movie")
PlayMovie(0, WindowID(0))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Else
MessageRequester("Error", "Can't load the movie...", 0)
EndIf
Ich sage nur kompillieren udn staunen

Verfasst: 08.11.2008 16:03
von ts-soft
@Joel
Versteh den Sinn Deines Codes nicht
Wenn Du die ganzen Delay sowie den Thread wegläßt, funktionierts
mindestens genauso schnell
Wozu überhaupt die API statt der nativen PB Funktion?
Verfasst: 08.11.2008 16:08
von Joel
Code: Alles auswählen
Procedure Download()
URLDownloadToFile_(0, "http://test.de/test.wmv", "D:\test.wmv" ,0,0)
Delay (100000)
EndProcedure
Wenn ich das Delay weglasse, dann sagt Pure-Basic: "Invalid Memory Access" bei Endprocedure.
Das andere Delay vor dem Abspielen des Videos ist sozusamen das Caching

Verfasst: 08.11.2008 16:11
von ts-soft
URLDownloadToFile_ kehrt doch sowieso erst nach Fertigstellung zurück?
Muß mir mal ne reale Inetadresse zum testen suchen.
Dem Thread fehlt schon mal der Parameter, erster Crash
Verfasst: 08.11.2008 16:29
von Joel
Habe das jetzt etwas Optimiert:
Code: Alles auswählen
Procedure Download(x.l)
URLDownloadToFile_(0, "http://www.test.de/test.wmv", "D:\test.wmv" ,0,0)
EndProcedure
If InitMovie() = 0
MessageRequester("Error", "Can't initialize movie playback !", 0)
End
EndIf
aThread = CreateThread(@Download(), 88)
Delay(500)
If LoadMovie(0, "D:\test.wmv")
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "Film")
PlayMovie(0, WindowID(0))
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
EndIf
Habe aber noch ein Problem: Wenn ich den Video gerade Abspiele, dann ein Fenster öffne, und dann Fenster dann wieder Minimiere, dann ist das Fenster mit dem Video wieder im Vordergrund aber der Video wird nicht angezeigt. Das Fenster ist dann weiß und erst, wenn ich das Fenster bewege, sehe ich den Video wieder....
Verfasst: 08.11.2008 16:47
von ts-soft
Bei Deinem Code wird nichts gestreamt, lediglich UrlDownloadToFile nutzt
den Cache, wenn die Datei bereits vorhanden ist.
Ohne "Streaming" ist es genauso schnell da:
Code: Alles auswählen
TempFile.s = GetTemporaryDirectory() + "test.mpeg"
If InitMovie() = 0
MessageRequester("Error", "Can't initialize movie playback !", 0)
End
EndIf
If Not URLDownloadToFile_(0, "http://www.blitzbasement.net/bank/aliensong.mpeg", TempFile, 0, 0)
If LoadMovie(0, TempFile)
OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "Alien Song")
PlayMovie(0, WindowID(0))
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
DeleteFile(TempFile)
EndIf
EndIf
Verfasst: 08.11.2008 16:58
von Joel
Hmmm, es müsste eine Funktion geben, die Videos abspielt, die noch übertragen werden.
Verfasst: 09.11.2008 17:48
von Joel
Dann ist also Streaming mit PB gar nicht möglich oder?
Verfasst: 13.11.2008 17:23
von PMV
Mit nativen Befehlen nicht. PB hat nur Funktionen zum abspielen von
Videos von der Festplatte (Movielib) ... willst du Streamen oder sogar
Dateiformate verwenden, die diese Lib nicht unterstützt, bist du
gezwungen auf alternativen um zu steigen. Alternativen nicht zu PB,
sondern alternative Bibliotheken wie FMOD für Audio, das aber auch
Streamen kann
Welche da für Videos gut geeignet ist weis ich aber nicht.
MFG PMV