Accueil > > > TUTO 11 DIRECTX : DIRECTSHOW LES VIDEO DANS VOS JEUX.
TUTO 11 DIRECTX : DIRECTSHOW LES VIDEO DANS VOS JEUX.
Information sur la source
Description
Pour se code, pas beaucoup de nouveauté, simplement l'affichage d'une vidéo en se servant de DirectShow, vidéo affiché soit en plein écran (pour un jeu) soit en fenetré dans une picture box ou tout autre objet possédant un hWnd.
Source
- Option Explicit
-
- Public DSAudio As IBasicAudio 'IBasicAudio permet d'avoir accès à la création de filtre
- Public DsVideo As IBasicVideo 'Permet l'accés d'un filtre vidéo
- Public DSevent As IMediaEvent 'IMediaEvent permet d'accéder aux événements sur un filtre
- Public DScontrol As IMediaControl 'IMediaControl permet d'avoir accès au flux de donner passant par un filtre
- Public IPosition As IMediaPosition 'IMediaPosition permet d'accéder à la position d'un fichier lu par un filtre
- Public VideoWindow As IVideoWindow 'Information concernant l'affichage de la video, fenetre de destination, taille, et autres...
- Public FullScreen As Boolean 'Option pour le mot plein ecran ou fenetré
-
- 'Chargement d'un fichier en memoire
- Public Function LoadVideo(ByRef path As String, _
- ByRef Video As IBasicVideo, ByRef sEvent As IMediaEvent, _
- ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
-
- If path <> "" Then
- Set Control = New FilgraphManager ' Initialisation de DirectShow, Filgraphmanager étant un contrôle qui permet d'avoir accède au filtre présent sur un PC
- Control.RenderFile path ' La méthode RenderFile cré un filtre qui permet de rendre un fichier.
-
- Set DSAudio = Control ' On donne l'accès au donné des filtres créés par DirectShowAudio à DScontrol
-
- Set Video = Control ' On donne l'accès au donné des filtres créés par DirectShowAudio à DScontrol
-
- Set sEvent = Control ' On donne accès à DScontrol aux événements des filtres
- Set Position = Control ' De même pour la position
-
- Set VideoWindow = Control ' Attribut le control de la fenetre video
-
- If Not FullScreen Then
- VideoWindow.WindowStyle = 1 ' Si on est en fenetré on enleve le cadre de la fenetre d'affichage Direct Show
- Else
- VideoWindow.FullScreenMode = True ' Met le mode plein ecran à vrai
- End If
-
- End If
-
-
- End Function
-
- 'Joue le fichier
- Public Function PlayVideo(ByRef Control As IMediaControl, ByRef Position As IMediaPosition, Optional ByRef hWnd As Long)
-
- Dim lWidth As Long
- Dim lHeight As Long
-
- Control.Stop ' Arret de la lecture
- Position.CurrentPosition = 0 ' Remise à 0
- Control.Run ' Joue le fichier
-
-
- If Not FullScreen Then
-
- DsVideo.GetVideoSize lWidth, lHeight 'Récupere les dimensions de la video
-
- VideoWindow.Owner = hWnd 'Attribut la fenetre d'affichage à la fenetre de Direct Show
- VideoWindow.SetWindowPosition 0, 0, lWidth, lHeight 'Définition des positions de la fenetre et de sa taille
-
- End If
-
-
- End Function
-
- 'Stop entierement la lecture
- Public Function StopVideo(ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
-
- Control.Stop ' Arret de la lecture
- Position.CurrentPosition = 0 ' Remise à 0
-
- End Function
-
- 'Supprime la video de la memoire
- Public Function DeleteVideo(ByRef Control As IMediaControl, ByRef sEvent As IMediaEvent, ByRef Video As IBasicVideo, ByRef Position As IMediaPosition)
-
- Control.Stop ' Arret de la video
-
- Set Control = Nothing ' Vidage de la memoire
- Set sEvent = Nothing ' Vidage de la memoire
- Set Video = Nothing ' Vidage de la memoire
- Set Position = Nothing ' Vidage de la memoire
-
- End Function
-
- 'Pause
- Public Function PauseVideo(ByRef Control As IMediaControl)
-
- Control.Pause ' Pause de la video
-
- End Function
-
- 'Redemarage apres une pause
- Public Function ReStartVideo(ByRef Control As IMediaControl)
-
- Control.Run ' Relance la video
-
- End Function
Option Explicit
Public DSAudio As IBasicAudio 'IBasicAudio permet d'avoir accès à la création de filtre
Public DsVideo As IBasicVideo 'Permet l'accés d'un filtre vidéo
Public DSevent As IMediaEvent 'IMediaEvent permet d'accéder aux événements sur un filtre
Public DScontrol As IMediaControl 'IMediaControl permet d'avoir accès au flux de donner passant par un filtre
Public IPosition As IMediaPosition 'IMediaPosition permet d'accéder à la position d'un fichier lu par un filtre
Public VideoWindow As IVideoWindow 'Information concernant l'affichage de la video, fenetre de destination, taille, et autres...
Public FullScreen As Boolean 'Option pour le mot plein ecran ou fenetré
'Chargement d'un fichier en memoire
Public Function LoadVideo(ByRef path As String, _
ByRef Video As IBasicVideo, ByRef sEvent As IMediaEvent, _
ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
If path <> "" Then
Set Control = New FilgraphManager ' Initialisation de DirectShow, Filgraphmanager étant un contrôle qui permet d'avoir accède au filtre présent sur un PC
Control.RenderFile path ' La méthode RenderFile cré un filtre qui permet de rendre un fichier.
Set DSAudio = Control ' On donne l'accès au donné des filtres créés par DirectShowAudio à DScontrol
Set Video = Control ' On donne l'accès au donné des filtres créés par DirectShowAudio à DScontrol
Set sEvent = Control ' On donne accès à DScontrol aux événements des filtres
Set Position = Control ' De même pour la position
Set VideoWindow = Control ' Attribut le control de la fenetre video
If Not FullScreen Then
VideoWindow.WindowStyle = 1 ' Si on est en fenetré on enleve le cadre de la fenetre d'affichage Direct Show
Else
VideoWindow.FullScreenMode = True ' Met le mode plein ecran à vrai
End If
End If
End Function
'Joue le fichier
Public Function PlayVideo(ByRef Control As IMediaControl, ByRef Position As IMediaPosition, Optional ByRef hWnd As Long)
Dim lWidth As Long
Dim lHeight As Long
Control.Stop ' Arret de la lecture
Position.CurrentPosition = 0 ' Remise à 0
Control.Run ' Joue le fichier
If Not FullScreen Then
DsVideo.GetVideoSize lWidth, lHeight 'Récupere les dimensions de la video
VideoWindow.Owner = hWnd 'Attribut la fenetre d'affichage à la fenetre de Direct Show
VideoWindow.SetWindowPosition 0, 0, lWidth, lHeight 'Définition des positions de la fenetre et de sa taille
End If
End Function
'Stop entierement la lecture
Public Function StopVideo(ByRef Control As IMediaControl, ByRef Position As IMediaPosition)
Control.Stop ' Arret de la lecture
Position.CurrentPosition = 0 ' Remise à 0
End Function
'Supprime la video de la memoire
Public Function DeleteVideo(ByRef Control As IMediaControl, ByRef sEvent As IMediaEvent, ByRef Video As IBasicVideo, ByRef Position As IMediaPosition)
Control.Stop ' Arret de la video
Set Control = Nothing ' Vidage de la memoire
Set sEvent = Nothing ' Vidage de la memoire
Set Video = Nothing ' Vidage de la memoire
Set Position = Nothing ' Vidage de la memoire
End Function
'Pause
Public Function PauseVideo(ByRef Control As IMediaControl)
Control.Pause ' Pause de la video
End Function
'Redemarage apres une pause
Public Function ReStartVideo(ByRef Control As IMediaControl)
Control.Run ' Relance la video
End Function
Conclusion
Pour le mode plein écran je n'ai pas trouvé comment quitter automatiquement, toutefois dans la source j'ai mis une astuce utilisable :
If IPosition.CurrentPosition = IPosition.Duration Then Form1.Show End If
Ceci suffit à retourner en mode fenetré.
J'ai utilisé l'aide de msdn, et le code du module suivant : http://files.codes-sources.com/fichier.aspx?id=8 202&f=Module1.bas
Surement je ferais une mise a jour pour permettre differente modification au niveau de la vidéo.
Aucune erreur n'est gerer dans le zip.
Historique
- 29 mai 2007 02:48:20 :
- Petite erreur.
- 01 juin 2007 16:03:01 :
- Mise à jour du nom de la source.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lecteur Video Via DirectShow [ par PaTaTe ]
Je suis entrain d'ecrire un lecteur video en utilisant DirectShow mais je suis confronté à un problème.J'aimerais pouvoir afficher 
Directshow et VB5 [ par Chesterylb ]
Bonjour, - Je voudrais pouvoir travailler sur la vidéo d'une caméra( signaux RVB ou Y/C )pour, par exemple, sélectionner une trame sur 10 etc.,visuali
VB 2005 ou C/C++ ? [ par Kite37 ]
Bonjour !Souhaitant avec des amis nous lancer dans un projet de jeu assez conséquent, nécessitant l'utilisation de DirectX 9.0, nous sommes confrontés
Recherche exemples VB6 du DirectShow SDK pour acquisition/traitement video [ par jud83 ]
Bonjour, Je possède VB6 (Edition 1998) et j'essaye d'acquerir (et traiter) de la video à partir d'une carte d'acquisition (Pinnacle DC10) et/ou une W
Créer son premier jeu avec DirectX 9 et Visual Basic 2008 Express [ par Diable11 ]
Bonjour,Quelqu'un peut m'aider à créer mon propre premier jeu avec DirectX 9 et Visual Basic 2008 Express ?Je ne sais pas comment on utilise les DLL d
Projet de jeu video serieux! [ par cobra84 ]
Toutes les infos sont sur:http://www.multimania.com/cobra84
Video avec directx [ par Stoomm ]
Salut, Quelqu'un pourrait il me donner un exemple pour lire une video en plein ecran avec DirectX.Merci d'avance.A+. Stoomm.
Projet de jeu video en Vb [ par cobra84 ]
pour toute info:ipone.jeremy@wanadoo.frou:http://www/multimania.com/cobra84/ (site en contruction)
Projet de jeu video [ par cobra84 ]
Toutes les infos sont sur:http://www.multimania.com/cobra84
Lancer un jeu video dans une fenetre [ par lionel4 ]
Lu !Voila je me demandé comment lancer un jeu dans une fenetre (vous savez ils se lancent toujours en pleine ecran).MerciLionel4 - Débutant
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|