Video abspielen im Vollbildmodus bei geöffnetem Screen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
loejen
Beiträge: 5
Registriert: 28.12.2009 15:14

Video abspielen im Vollbildmodus bei geöffnetem Screen

Beitrag von loejen »

Hallo zusammen,

seit längerer Zeit schlage ich mich mit dem Problem herum, einen Film auf einem geöffneten Screen abspielen zu wollen. Ich habe bereits sämtliche in den Foren geschriebenen Ersatzlösungen mit Hilfe von etwaigen Media/Movie Plugins genauso wie die PB interne Implementierung der Movie Library ausprobiert, aber es treten immer folgende Fehler auf:

Bei der DshowMedia.pbi wird z.B. nur der Sound abgespielt, bei der internen Implementierung der Movie Library von PB wird bei Übergabe der ScreenID() als Zieloberfläche ein "weiterer Screen" über meinen Screen gelegt, d.h. wenn ich die Windowstaste drücke werden mir zwei Fenster in der Taskleiste angezeigt.

Deshalb nun einmal die Frage nach einer konkreten Implementierung bei geöffnetem Screen, BEVOR es zur repeat-Schleife des Screens selber geht. D.h. es soll ein Intro abgespielt werden auf dem geöffneten Screen, wobei der Film auf die Screenauflösung skaliert werden soll.

So öffne ich meinen Screen:

Code: Alles auswählen

If OpenScreen(myGraphics\width,myGraphics\height,32,#SCREEN_MAIN_TITLE,#PB_Screen_SmartSynchronization)
  ;CEGUI init
  SetGUITheme3D(#CEGUI_THEME,#CEGUI_FONT);
  ;create front camera first (replace with camera.pb file if finished)
  CreateCamera(0, 0, 0, 100, 100);
  ;intro
  showIntro();HIER SOLL DAS PROGRAMM EINEN FILM ABSPIELEN UND
                  ;ERST NACH DESSEN BEENDIGUNG SOLL AUS DER METHODE GESPRUNGEN WERDEN
  ;init windows
  initMenuWindow();
  initSettingsWindow();
  ;show menu window
  showMenuWindow();
Gesucht ist also die Implementierung der Methode showIntro().

So sah z.B. mein Versuch mit der DshowMedia.pbi aus, der mir jedoch nur den Sound abspielt und ein schwarzes Bild liefert (wird derselbe Film in einem Fenster anstatt auf einem Screen abgespielt, funktioniert er einwandfrei):

Code: Alles auswählen

Procedure showIntro()
  ;TODO
  CompilerIf #PB_OS_Windows
    If InitMedia(#INTRO_MOVIE) And LoadMedia(#INTRO_MOVIE,"Media/Movies/testmovie.avi", ScreenID())
      PlayMedia(#INTRO_MOVIE);
      ResizeMedia(#INTRO_MOVIE,0,0,myGraphics\width,myGraphics\height);
      Repeat
        Delay(5);
        ExamineKeyboard();
      Until MediaState(#INTRO_MOVIE) = #State_Stopped Or KeyboardPushed(#PB_Key_Escape) Or KeyboardPushed(#PB_Key_Space)
      CloseMedia(#INTRO_MOVIE);
      FreeMedia(#INTRO_MOVIE);
    EndIf
  CompilerEndIf                 
EndProcedure
Am liebsten wäre mir natürlich eine Lösung die auf der internen Movie Library basiert, da das Spiel später für Linux/Mac/Windows sein soll. Die DshowMedia.pbi würde
das Intro Windows Usern vorbehalten, was eigentlich nicht meine Absicht ist.

Vielen Dank im Voraus
Loejen