IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Lire une video avec le binding VLC


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Lire une video avec le binding VLC
    bonjour,

    Voici ma question, je suis en train de programmer un frontend pour Mame.
    pour chaque jeu, j'affiche une vidéo de 30s.
    Pour l'instant j'utilise le module Movie de Pygame et cela fonctionne correctement.

    Je voudrait aller plus loin et dépasser les limite de se module, à savoir :
    pouvoir redimensionner les vidéo lues et utiliser autre chose que du MPEG 1. Je m'explique :

    Je voudrais afficher une vidéo de dimension (Hauteur ,Largeur) en fonction des dimensions de l'écran de l'utilisateur.
    En gros pour un petit format les dimensions seront H et L, pour un plus gros ecran H*1.5 et L * 1.5 etc.

    J'arrive à afficher une vidéo avec le module VLC. Pour cela il faut passer l'id de la fenêtre à VLC pour qu'il puisse afficher la vidéo dedans.
    Le problème est que cela affiche la vidéo en plein écran et non pas dans un coin l'écran.
    Une pygame.surface n'ayant pas d'ID je n'arrive pas a indiquer à VLC qu'il faut afficher la vidéo dans une surface à tel endroit dans ma fenêtre.

    Je vous mets le bout de code pour explication.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    vlc = vlc.Instance()
    film = vlc.media_new(repertoire_courant  + '/data/films/Altered Beast.mpeg')
    lecteur = vlc.media_player_new()
    win_id = pygame.display.get_wm_info()['window'] #recupération de l'id de la fenetre
    lecteur.set_hwnd(win_id) # passage de l'information à VLC
    lecteur.set_media(film) # passage de la video à VLC
    lecteur.play()'''
    je voudrais pouvoir créer une surface et dire à VLC d'afficher la vidéo sur cette surface.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    surface_film = pygame.Surface((100,100))
    surface_film.fill([0, 0, 0])
    surface_rect = surface_film.get_rect()

    Il y très peu de tuto la dessus, merci d'avance pour votre aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 806
    Points
    219 806
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    Je pense qu'il ne faut pas indiquer à VLC de créer une fenêtre et lui dire de remplir une surface, surface que vous devez passer à pygame.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Merci pour votre réponse LittleWhite.
    C'est justement ce que je n'arrive pas a faire.
    Je n'arrive pas à "dire" à VLC de prendre une surface pour afficher la vidéo dans pygame.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 806
    Points
    219 806
    Billets dans le blog
    125
    Par défaut
    Je pense que l'on peut s'inspirer de cet exemple : https://wiki.videolan.org/LibVLC_SampleCode_SDL/
    En effet, cela devrait être le même principe, simplement en utilisant les appels Python

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Merci encore pour ta réponse.
    Malheureusement après avoir lu l'exemple, je suis incapable de traduire l'exemple vers du python avec pygame..... Mes connaisances en programmation sont limitées !!!

    Je recherche encore désespérément un exemple avec python ou encore mieux avec pygame...

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 806
    Points
    219 806
    Billets dans le blog
    125
    Par défaut
    Là, il me semble que ce ne soit que de la traduction.
    libvlc_video_set_format(mp, "RV16", VIDEOWIDTH, VIDEOHEIGHT, VIDEOWIDTH*2); -> http://liris.cnrs.fr/advene//downloa...deo_set_format
    libvlc_media_player_play(mp); -> http://liris.cnrs.fr/advene//downloa...on-ctypes/doc/

    Dans l'exemple Python / Qt, ils font ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # the media player has to be 'connected' to the QFrame
            # (otherwise a video would be displayed in it's own window)
            # this is platform specific!
            # you have to give the id of the QFrame (or similar object) to
            # vlc, different platforms have different functions for this
            if sys.platform == "linux2": # for Linux using the X Server
                self.mediaplayer.set_xwindow(self.videoframe.winId())
            elif sys.platform == "win32": # for Windows
                self.mediaplayer.set_hwnd(self.videoframe.winId())
            elif sys.platform == "darwin": # for MacOS
                self.mediaplayer.set_nsobject(self.videoframe.winId())
            self.PlayPause()
    Mais bon, c'est légèrement différent, quoi que, avec la SDL vous devriez être capable de récupérer l'ID de la fenêtre.

Discussions similaires

  1. [Multimédia] lire une video en TMemoryStream avec un TMediaPlayer
    Par Argol_Medusa dans le forum C++Builder
    Réponses: 7
    Dernier message: 17/07/2013, 18h00
  2. [AC-2003] lire une video dans vlc
    Par chuspyto dans le forum VBA Access
    Réponses: 15
    Dernier message: 11/10/2012, 22h52
  3. Lire une video incomplète avec MediaElement
    Par hippo92210b dans le forum Développement Windows
    Réponses: 3
    Dernier message: 12/07/2010, 09h31
  4. lire automatiquement une video avec leflvplayer
    Par dedel53 dans le forum Flash
    Réponses: 7
    Dernier message: 08/05/2007, 06h33
  5. [C#] Lire une video avec axwindowsmediaplayer
    Par padodanle51 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/05/2006, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo