Video et plein ecran

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Video et plein ecran

Message par Stefou »

Salut à tous,

Le plein écran en vidéo total n'est pas si simple !
Voici une façon que je n'ai pas trouvé sur le forum de passer en plein écran.
La méthode est de changer le style de la fenêtre actuel, pour retirer la barre de titre, et les bords.
Ce n'est pas encore impeccable, et il y a du bidouillage dans le rafraichissement de la fenêtre...mais bon cela marche en attendant mieux...

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400, 400, "Video", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget) 
  SetWindowColor(0,0)

  InitMovie()

  If LoadMovie(0,"F:\film\C'Est Pas Sorcier.avi")
    PlayMovie(0,WindowID(0))
    ResizeMovie(0, 0, 0, WindowWidth(0),WindowHeight(0))
  EndIf
  
  Repeat
    event=WaitWindowEvent()
    Select event
      Case #PB_Event_SizeWindow 
        ResizeMovie(0, 0, 0, WindowWidth(0),WindowHeight(0))
      Case #WM_KEYDOWN  ;{touche clavier
        Debug "Appuye touche "+Str(EventwParam())
        id_touche=EventwParam()
        
        Select id_touche
          Case 13
            If full=1 ;retour en ecran de base
              full=0
              SetWindowLong_(WindowID(0),#GWL_STYLE	,Style) ;on remet le style de base de la fenetre
            SetWindowState(0, #PB_Window_Minimize)
            SetWindowState(0,#PB_Window_Normal)
            ResizeWindow(0,x,y,l,h)
            SetWindowState(0, etat)
            ResizeMovie(0, 0, 30, 400, 300)
          Else ; passage en plein ecran
            full=1
            etat=GetWindowState(0)
            SetWindowState(0,#PB_Window_Normal)
            x=WindowX(0)
            y=WindowY(0)
            l=WindowWidth(0)
            h=WindowHeight(0)
            Style=GetWindowLong_(WindowID(0),#GWL_STYLE) ; on sauve le style de la fenetre
            SetWindowLong_(WindowID(0),#GWL_STYLE	,#WS_VISIBLE ); on met la fentre en style sans barre de titre et sans bord
            
            SetWindowState(0, #PB_Window_Maximize)
            ResizeMovie(0, 0, 0, WindowWidth(0),WindowHeight(0))
          EndIf
          
        EndSelect
        

    EndSelect
    
  Until event = #PB_Event_CloseWindow
EndIf
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Video et plein ecran

Message par SPH »

C'est bien que tu abordes le sujet. J'avais une question similaire concernant le flux video que je recois d'internet grace au logiciel ADSL TV. Comment projeter le flux en pouvant regler soit meme la hauteur et la largeur ???

J'explique le truc : il y a des chaines extremement applatis et je voudrais les étirer. (question qui concerne aussi la question de stefou)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Video et plein ecran

Message par Backup »

ben avec la fonction :
RenderMovieFrame(#Film, SpriteID)
Description

Joue le film directement sur un sprite, au lieu de le jouer sur une zone vidéo dédiée. Cette commande très puissante permet d'effectuer des effets spéciaux en temps réel (tel que jouer un film en plein écran en plusieurs niveaux de transparence grâce aux Sprite3D, rotation, zoom etc...). Malheureusement, tous les formats vidéos ne sont pas compatibles avec ce mode et pour l'instant seuls les MPEG semblent fonctionner parfaitement. Un 'SpriteID' valide peut être facilement obtenu en récupérant le résultat de la commande SpriteID() ou CreateSprite(). Avant d'utiliser cette commande, PlayMovie() doit être lancé avec l'option #PB_Movie_Rendered.
vous envoyez le film sur un sprite , et vous ouvrez un ecran graphique .... :roll:
Stefou
Messages : 234
Inscription : jeu. 18/janv./2007 14:08

Re: Video et plein ecran

Message par Stefou »

Malheureusement, tous les formats vidéos ne sont pas compatibles avec ce mode et pour l'instant seuls les MPEG semblent fonctionner parfaitement.
Et oui, grosse contrainte ! :?

Il y a ça aussi, mais je n'y arrive pas !

Code : Tout sélectionner

Il est aussi possible de jouer un film en plein écran, il suffit d'utiliser le résultat de la commande ScreenID() comme 'WindowID'. 
@SPH
Avant je pouvais régler la largeur et la hauteur comme je le voulais, mais maintenant je ne peux plus ! Je crois que c'est depuis l'installation de ffdshow. Comme je m'en servais rarement, j'ai laissé tomber.
Répondre