Video Streamen und PB

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Kann man eigentlich mit FMOD auch Videos streamen?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag 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 :mrgreen:
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
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

Beitrag von ts-soft »

@Joel
Versteh den Sinn Deines Codes nicht :freak:
Wenn Du die ganzen Delay sowie den Thread wegläßt, funktionierts
mindestens genauso schnell :lol:

Wozu überhaupt die API statt der nativen PB Funktion?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag 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 :mrgreen:
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
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

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

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

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
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

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Hmmm, es müsste eine Funktion geben, die Videos abspielt, die noch übertragen werden.
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Dann ist also Streaming mit PB gar nicht möglich oder?
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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 :wink:

Welche da für Videos gut geeignet ist weis ich aber nicht.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten