Page 1 sur 1

Video et plein ecran

Publié : lun. 16/août/2010 9:22
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

Re: Video et plein ecran

Publié : lun. 16/août/2010 9:45
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)

Re: Video et plein ecran

Publié : lun. 16/août/2010 10:02
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:

Re: Video et plein ecran

Publié : lun. 16/août/2010 10:10
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.