|
Managed DirectX - AudioVideoPlayBack - VB.NET
Publié le vendredi 20 août 2004, dernière modification le lundi 28 janvier 2008
Pour ceux qui ont déjà utilisé DirectX et particulièrement DirectShow, Audio Video Playback est le namespace du Managed DirectX qui le remplace. Microsoft a sans doute décidé de changer le nom, puisque AudioVideoPlayback n'offre pas toutes les posibilités de son prédécesseur. La gestion des DVD a disparu, impossible d'intervenir sur le Graphe de Filtres, ... . Si vous cherchez DirectShow dans la documentation de DirectX pour C++, vous verez que Microsoft la mise dans un fichier séparé, tout comme DirectPlay et DirectMusic.
Important : Certaines informations que vous rencontrerez dans ce documents peuvent se réveler inexactes. Managed DirectX étant une technologie assez récente, la documentation à son sujet est encore quelque peu légère. Je ferais donc des mises-à-jour au fur et à mesure que je pourrais vérifier ces informations. Merci de votre compréhension.
|
1. Description du namespace Microsoft.DirectX.AudioVideoPlayback
Le namespace AudioVideoPlayback n'est pas très fourni par rapport à son "ancêtre" DirectShow.
1.1. Classes
-
Audio
: Fournit toutes les méthodes de bases pour reproduire un flux audio
-
TextureRenderEventArgs
: EventArgs utilisé lors du rendu d'une video comme texture. Je ne l'aborderais pas ici
-
Video
: Fournit toutes les méthodes de bases pour reproduire un flux video et audio. Video contient un attribut de type audio
1.2. Enumérations
-
SeekPositionFlags
: Permet de définir la manière de se déplacer dans un flux audio ou video.
-
StateFlags
: Définit les états des flux Audio ou Vidéo.
1.3. Structures
-
SeekingCaps
: Structure qui donne des informations sur les possibilités du flux audio ou video.
1.4. Delegates
-
TextureRenderEventHandler
: Délégué de la méthode TextureReadyToRender de l'objet Video.
2. Classes Audio et Video
On ne va pas voir en détail le contenu de ces classes mais seulement aborder les points les plus importants. Je détaillerais ensuite les particularités de la classe Video.
2.1. Constructeurs
Audio possède deux constructeurs. Le premier prend en argument une chaine avec le nom du fichier à reproduire. Le second est le même que le premier avec un second argument de type booléen qui indique si la lecture doit commencer automatiquement à la fin du chargement du média (true) ou pas (false).
2.2. Méthodes
|
Nom
|
Description
|
|
FromFile et FromURI
|
Ce sont deux méthodes sont partagées (shared en VB.NET et static en C#) qui permettent de créer une instance à partir d'un nom de fichier ou d'une URI. Elles ont les mêmes surcharges que le constructeur. Elles retournent un objet de type Audio ou Video selon le cas.
|
|
Play, Pause et Stop
|
Rien de bien important à dire. Leurs noms les décrivent d'eux mêmes.
|
|
SeekCurrentPosition
|
Définit la nouvelle position courante dans le flux du paramètre de type SeekPositionFlags et de SeekingCaps.
|
|
SeekStopPosition
|
Définit la nouvelle position à laquelle doit s'arrêter le flux du paramètre de type SeekPositionFlags et de SeekingCaps.
|
2.3. Propriétés
|
Nom
|
Description
|
|
Balance
|
Définit la balance du flux sonore : -10000 pour tout sur le côté gauche, 0 équilibré et 10000 pour tout à droite. Cette propriété n'influe pas sur la balance de la carte son directement. Si vous ouvrez sndvol32.exe (le haut parleur dans la barre de taches), vous verrez que le volume ne change pas.
|
|
CurrentPosition
|
Position courante dans le flux en secondes (plus les millisecondes)
|
|
Duration
|
Longueur du média en secondes (plus les millisecondes)
|
|
Playing, Paused et Stopped
|
Pour connaitre l'état actuel du média (en lecture, en pause ou arrêté)
|
|
SeekingCaps
|
Renvoie les possibilités du flux actuel
|
|
State
|
Equivalent à Playing, Paused et Stopped
|
|
StopPosition
|
Position à laquelle le flux a été stoppé
|
|
Volume
|
-10000 pour un niveau de 0 et 0 pour un niveau maximal. Cette propriété n'influe pas sur le volume de la carte son directement. Si vous ouvrez sndvol32.exe (le haut parleur dans la barre de taches), vous verez que la balance ne change pas.
|
2.4. Evénements
|
Nom
|
Description
|
|
Starting, Pausing et Stopping
|
Quand le flux est mis en lecture, en pause ou arrêté, ces évènements sont générés
|
|
Ending
|
Quand l'objet Audio ou Video arrive à la fin du flux, il génère cet évènement.
|
2.5. Exceptions
Les classes Audio et Video ne génèrent qu'un type d'exception (disponible dans le namespace DirectX) de type DirectXException. Pour plus d'infos sur le code de l'exception, consultez la
table des codes d'erreurs
sur la MSDN
3. Spécificités de la classe Video
La classe Video possède d'autre méthodes et propriétés par rapport à la classe Audio.
3.1. Méthodes
|
Nom
|
Description
|
|
HideCursor et ShowCursor
|
Masque ou montre le curseur de la souris pendant la lecture de la Video. En plein écran, inutile de vous occuper du curseur, il est automatiquement. Un appel à l'une de ces 2 méthodes lèvera une exception.
|
|
RenderToTexture
|
Permet de reproduire la video comme une texture d'un objet Direct3D. Je n'aborderais pas Direct3D ici, mais par exemple, votre video pourrait être la texture d'un cube dans un environement 3D.
|
3.2. Propriétés
|
Nom
|
Description
|
|
Audio
|
Une video possède une propriété de type Audio. Pour plus de détails, voir ce qui a été dit avant.
|
|
Fullscreen
|
Permet de passer du mode plein écran au mode fenêtré et vis versa. Permet également de savoir si la video est en plein écran ou non.
|
|
AverageTimePerFrame
|
Renvoie la durée moyenne que dure une trame, une image de la video. A ne pas confondre avec le nombre d'images par secondes.
|
|
IsCursorHidden
|
Pour savoir si le curseur a été masqué ou montré.
|
|
Size
|
Renvoie ou définie la taille de la video à l'écran, pas au niveau du fichier.
|
|
Owner
|
S'il n'est pas spécifié, une fenêtre est créée automatiquement pour reproduire la vidéo. Sinon, le owner peut être tout contrôle héritant de System.Windows.Forms.Control (j'ai essayé dans une ListeBox, ca marche :D )
|
|
MinimumIdealSize et MaximumIdealSize
|
Récupère les tailles minimums et maximums pour afficher la video.
|
3.3. Evénements
TextureReadyToRender
4. Application de démonstration
J'ai développé pour illustrer tous ces propos une application qui reprend tous les concepts que nous avons vu précédemment.
Remerciements
Merci à freegreg et à morpheus pour la correction des quelques erreurs qui s'étaient glissées dans les tutos.
|