Partager via


Lecture d’un appareil

La commande play (MCI_PLAY) démarre la lecture d’un appareil. Sans indicateur, cette commande commence à jouer à partir de la position actuelle et se lit jusqu’à ce que la commande soit interrompue ou jusqu’à ce que la fin du média ou du fichier soit atteinte. Après la lecture, la position actuelle se trouve à la fin du média. Vous pouvez également utiliser la commande seek (MCI_SEEK) pour modifier la position actuelle.

La plupart des appareils qui prennent en charge la commande play prennent également en charge les indicateurs « from » (MCI_FROM) et « to » (MCI_TO). Ces indicateurs indiquent la position à laquelle l’appareil doit démarrer et arrêter la lecture. Par exemple, la commande suivante lit un disque audio CD à partir du début de la première piste à l’aide de la fonction mciSendString :

mciSendString("play cdaudio from 0", lpszReturnString, 
    lstrlen(lpszReturnString), NULL);

Certains types d’appareils étendent cette commande pour exploiter les fonctionnalités d’un appareil particulier. Par exemple, la commande de lecture pour le type d’appareil videodisc inclut les indicateurs « fast » (MCI_VD_PLAY_FAST), « slow » (MCI_VD_PLAY_SLOW) et « scan » (MCI_VD_PLAY_SCAN).

Notes

Les unités affectées à la valeur de position dépendent du format d’heure utilisé par l’appareil. Chaque appareil a un format d’heure par défaut, mais vous devez spécifier le format d’heure à l’aide de la commande set (MCI_SET) avant d’émettre des commandes qui utilisent des valeurs de position.

 

Lecture d’un fichier AVI

Les fichiers vidéo dans Windows sont constitués d’au moins deux flux de données entrelacés : un flux vidéo (pictorial) et un flux audio. Vous pouvez facilement lire ces fichiers audio-vidéo entrelacés (AVI) à l’aide de commandes MCI. Les sections suivantes traitent de la lecture de fichiers AVI.

Configuration d’une fenêtre de lecture MCIAVI

Votre application peut spécifier les options suivantes pour définir la fenêtre de lecture d’un fichier AVI :

  • Utilisez la fenêtre contextuelle par défaut du pilote MCIAVI.
  • Spécifiez une fenêtre parente et un style de fenêtre que le pilote MCIAVI peut utiliser pour créer la fenêtre de lecture.
  • Spécifiez une fenêtre de lecture pour le pilote MCIAVI à utiliser pour la lecture.
  • Lire le fichier AVI sur un écran en plein écran.

Si votre application ne spécifie aucune option de fenêtre, le pilote MCIAVI crée une fenêtre par défaut pour lire la séquence. Le pilote crée cette fenêtre de lecture pour la commande ouvrir (MCI_OPEN), mais il n’affiche pas la fenêtre tant que votre application n’envoie pas une commande pour afficher la fenêtre ou lire le fichier. Cette fenêtre de lecture par défaut est une fenêtre contextuelle avec une bordure de dimensionnement, une barre de titre, un cadre épais, un menu de fenêtre et un bouton Réduire.

Votre application peut également spécifier un handle de fenêtre parent et un style de fenêtre lorsqu’elle émet la commande open . Dans ce cas, le pilote MCIAVI crée une fenêtre basée sur ces spécifications au lieu de la fenêtre contextuelle par défaut. Votre application peut spécifier n’importe quel style de fenêtre disponible pour la fonction CreateWindow . Les styles qui nécessitent une fenêtre parente, comme WS_CHILD, doivent inclure un handle de fenêtre parent.

Votre application peut également créer sa propre fenêtre et fournir le handle au pilote MCIAVI à l’aide de la commande window (MCI_WINDOW). Le pilote MCIAVI utilise cette fenêtre au lieu de créer l’une de ses propres fenêtres.

Lorsque le pilote MCIAVI crée la fenêtre de lecture ou obtient un handle de fenêtre à partir de votre application, il n’affiche pas la fenêtre tant que votre application ne lit pas la séquence ou envoie une commande pour afficher la fenêtre. Votre application peut utiliser la commande window pour afficher la fenêtre sans lire la séquence. Par exemple, la commande suivante affiche la fenêtre à l’aide de mciSendString :

mciSendString("window movie state show", lpszReturnString,
    lstrlen(lpszReturnString), NULL);

Dans cet exemple, « film » est un alias pour l’appareil de vidéo numérique.

Votre application peut également lire un fichier AVI en plein écran. Pour lire en plein écran, modifiez la commande de lecture (MCI_PLAY) avec l’indicateur « plein écran » (MCI_MCIAVI_PLAY_FULLSCREEN). Lorsque votre application utilise cet indicateur, le pilote MCIAVI utilise un format plein écran de 320 x 240 pixels pour lire la séquence. Par exemple, la commande suivante lit le fichier ouvert en plein écran (en utilisant « film » comme alias) :

mciSendString("play movie fullscreen", lpszReturnString,
    lstrlen(lpszReturnString), NULL);

Modification de l’état de lecture d’un fichier AVI

Votre application peut utiliser la commande seek (MCI_SEEK) pour déplacer la position actuelle vers le début, la fin ou une position arbitraire dans un fichier AVI. Il existe deux modes de recherche pour le pilote MCIAVI : exact et inexact. Votre application peut modifier le mode de recherche à l’aide de la commande set (MCI_SET). Lorsque vous utilisez le paramètre « rechercher exactement sur », le pilote MCIAVI recherche exactement la trame spécifiée par votre application. Cela peut entraîner un retard si le fichier est compressé temporellement et que votre application ne spécifie pas de trame clé. Lorsque vous utilisez le paramètre « rechercher exactement désactivé », le pilote MCIAVI recherche l’image clé la plus proche dans un fichier compressé temporellement.

Certaines commandes MCI permettent à votre application de modifier la lecture d’un fichier AVI d’autres façons. Par exemple, un fichier AVI, par défaut, est lu à sa vitesse normale, mais votre application peut augmenter ou diminuer cette vitesse à l’aide de l’indicateur « vitesse » avec la commande set . Pour les fichiers AVI, une valeur de vitesse de 1 000 est typique. Ainsi, pour lire un film à la moitié de sa vitesse habituelle, votre application peut utiliser le jeu de commandes « vitesse de film 500 » ; sinon, il peut utiliser le set « movie speed 2000 » pour lire la séquence à deux fois sa vitesse normale.

La commande setaudio (MCI_SETAUDIO) permet à votre application de contrôler la partie audio d’un fichier AVI. Votre application peut désactiver le son pendant la lecture ou, dans le cas de plusieurs fichiers de flux audio, sélectionner le flux audio lu.

Le pilote MCIAVI dispose d’une boîte de dialogue pour contrôler certaines de ses options de lecture. Parmi les options disponibles pour l’utilisateur, citons la sélection de la lecture orientée fenêtre ou plein écran, la sélection du mode de recherche et le zoom sur l’image. McIAVI peut afficher cette boîte de dialogue dans votre application à l’aide de la commande configurer (MCI_CONFIGURE).

Gestionnaires de flux

Les données d’un fichier AVI sont traitées comme une série de flux. Un fichier AVI contient généralement un flux audio et vidéo, et il peut également y avoir un flux personnalisé qui contient du texte ou d’autres données personnalisées. Le pilote MCIAVI peut utiliser différents gestionnaires pour ces flux de données. Pour plus d’informations sur les fichiers AVI personnalisés, consultez Gestionnaires de fichiers et de flux personnalisés.