Exemple DVApp

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Description

Application de capture vidéo numérique (DV).

Cet exemple montre comment créer différents types de graphiques de filtre pour contrôler les caméscopes DV. Il montre également comment effectuer la capture, l’aperçu, la transmission et le contrôle d’appareil avec un caméscope DV.

Utilisation

L’application DVApp prend en charge les modes suivants :

  • Aperçu : affiche DV à partir du caméscope vers une fenêtre vidéo.
  • DV vers fichier de type 1 : capture les données DV du caméscope vers un fichier DV de type 1.
  • Fichier de type 1 vers DV : transmet les données d’un fichier DV de type 1 au caméscope.
  • DV vers fichier de type 2 : capture les données DV du caméscope vers un fichier DV de type 2.
  • Fichier de type 2 vers DV : transmet les données d’un fichier DV de type 2 au caméscope.

Les modes de capture et de transmission effectuent également un aperçu. Chacun de ces modes a également une option Aucun aperçu , qui désactive la préversion. La capture sans préversion est plus efficace et peut réduire le nombre d’images supprimées.

L’application démarre en mode préversion. Pour sélectionner un autre mode, choisissez un mode dans le menu Mode graphique . Pour chaque mode, DVApp génère un graphique de filtre qui prend en charge les fonctionnalités de ce mode. Pour enregistrer le graphique en tant que fichier GraphEdit (.grf), sélectionnez Enregistrer le graphique dans fichier dans le menu Fichier . Quittez DVApp avant d’ouvrir le fichier dans GraphEdit.

Pour capturer dans un fichier :

  1. Dans le menu Fichier , choisissez Définir le fichier de sortie et entrez un nom de fichier.
  2. Dans le menu Mode graph , sélectionnez un mode DV vers Fichier (type 1 ou 2, avec ou sans préversion).
  3. Cliquez sur Enregistrer.
  4. Si le caméscope est en mode VTR, cliquez sur Lire.
  5. Pour arrêter la capture, cliquez sur Arrêter.

Pour transmettre d’un fichier au caméscope :

  1. Dans le menu Fichier , cliquez sur Définir le fichier d’entrée et sélectionnez un fichier DV. Le fichier doit correspondre au mode sélectionné (type 1 ou type 2).
  2. Dans le menu Mode Graph , sélectionnez un mode Fichier vers DV (type 1 ou 2, avec ou sans préversion).
  3. Cliquez sur Lire.
  4. Pour enregistrer les données sur bande, cliquez sur Enregistrer.
  5. Pour arrêter la transmission, cliquez sur Arrêter.

Si le caméscope est en mode VTR, l’utilisateur peut contrôler le mécanisme de transport via les boutons de style magnétoscope de l’application. Pour rechercher la bande, entrez le code de temps cible, puis cliquez sur le bouton rechercher.

Pour limiter la quantité de données capturées par l’application, choisissez Taille de capture dans le menu Fichier .

Pour case activée le format de bande (NTSC ou PAL), choisissez Vérifier la bande dans le menu Options.

Pour modifier la taille de la fenêtre d’aperçu, choisissez Modifier la taille du décodage dans le menu Options .

Notes de programmation

L’objectif main de cette application est de montrer comment créer divers graphiques de capture et de transmission de DV.

Arrivée et suppression de l’appareil

L’application gère l’arrivée et la suppression des appareils à l’aide de deux techniques différentes. Pour l’arrivée de l’appareil, la boucle de message de l’application répond à WM_DEVICECHANGE messages. Pour la suppression de l’appareil, l’application répond aux événements EC_DEVICE_LOST à partir du gestionnaire de graphe de filtre. L’une ou l’autre approche fonctionne, bien que l’événement EC_DEVICE_LOST dépend de l’existence de l’appareil dans le graphe de filtre.

L’application ne gère qu’un seul appareil à la fois. Si l’appareil actuel est supprimé, l’application recherche un autre appareil DV sur le système.

Sur certains caméscopes DV, l’utilisateur doit arrêter l’appareil lorsqu’il passe du mode caméra au mode VTR, ce qui déclenche un message perdu. L’application répond en activant ou en désactivant les commandes de menu appropriées. Toutefois, si l’utilisateur bascule rapidement entre les modes, le caméscope peut ne pas générer de message perdu sur l’appareil. Vous pouvez forcer la mise à jour des menus en choisissant Mode d’actualisation dans le menu Options . Certains caméscopes DV peuvent basculer les modes sans s’arrêter, mais envoyer un message perdu uniquement lorsqu’ils passent en mode VTR.

Contrôle de l’appareil

La fonctionnalité du bouton Lire et enregistrer dépend du mode actuel :

  • Préversion : le graphe de filtre s’exécute automatiquement. Le bouton Lecture démarre le transport.
  • Capturer dans un fichier : le bouton Enregistrer exécute le graphique et le bouton Lecture démarre le transport.
  • Transmettre à l’appareil : le bouton Lecture exécute le graphique et le bouton Enregistrer démarre le transport.

L’exemple d’application n’effectue pas de capture précise de l’image. À différents moments, l’application appelle la fonction Veille pour attendre que l’appareil réponde. Les caméscopes DV plus récents envoient une notification lorsque l’état de l’appareil change. Les appareils plus anciens peuvent ne pas prendre en charge la notification ; pour les besoins d’un exemple, l’appel en veille est une solution plus simple.

Téléchargement de l’exemple

Pour télécharger les exemples du Kit de développement logiciel (SDK) DirectShow, installez la dernière version du Kit de développement logiciel (SDK) Windows.

Cet exemple est installé sous le chemin suivant : [Racine du SDK]\Samples\Multimedia\DirectShow\Capture\DVApp.

Contrôle d’un caméscope DV

Vidéo numérique dans DirectShow

Exemples DirectShow