Partager via


Enregistrement en boucle

En mode bouclage, un client WASAPI peut capturer le flux audio lu par un dispositif terminal de rendu. Pour ouvrir un flux en mode bouclage, le client doit :

  • Obtenez une interface IMMDevice pour le dispositif terminal de rendu.
  • Initialisez un flux de capture en mode loopback sur le périphérique de rendu.

Après avoir suivi ces étapes, le client peut appeler la méthode IAudioClient ::GetService pour obtenir une interface IAudioCaptureClient sur l’appareil de point de terminaison de rendu.

Le mode de bouclage WASAPI est principalement conçu pour prendre en charge l’annulation de l’écho acoustique (AEC). Toutefois, d’autres types d’applications audio peuvent trouver le mode de bouclage utile pour capturer le mixage système qui est joué par le moteur audio.

Dans l’exemple de code de capture d’un flux, la fonction RecordAudioStream peut être facilement modifiée pour configurer un flux de capture en mode bouclage. Les modifications requises sont les suivantes :

Dans les versions de Windows antérieures à Windows 10 1703, le client de capture en mode pull ne reçoit aucun événement lorsqu’un flux est initialisé avec une mise en mémoire tampon pilotée par des événements et est activé pour le bouclage. Pour contourner ce problème, initialisez un flux de rendu en mode piloté par les événements. Chaque fois que le client reçoit un événement pour le flux de rendu, il doit signaler au client de capture d’exécuter le thread de capture qui lit le jeu d’exemples suivant à partir de la mémoire tampon du point de terminaison de capture. Dans les versions 1703 et ultérieures de Windows 10, les clients de bouclage pilotés par des événements sont pris en charge et n’ont plus besoin de la solution de contournement impliquant le flux de rendu.

Un client peut activer le mode bouclage uniquement pour un flux en mode partagé (AUDCLNT_SHAREMODE_SHARED). Les flux en mode exclusif ne peuvent pas fonctionner en mode bouclage.

L’implémentation du bouclage par WASAPI dépend des capacités du matériel. Si le matériel prend en charge une broche de bouclage sur le point de terminaison de rendu, WASAPI utilise l’audio reproduit sur cette broche pour le flux de bouclage. Lorsque le matériel ne prend pas en charge une broche de bouclage, WASAPI copie le flux de sortie du moteur audio dans la mémoire tampon de capture de l’application de bouclage, en plus de copier les données audio dans la broche de rendu du matériel.

Certains fournisseurs de matériel implémentent des dispositifs de bouclage (plutôt que de créer des instances sur les dispositifs de rendu) dans leurs adaptateurs audio. Bien que les dispositifs de bouclage matériel soient similaires au mode de bouclage WASAPI, ils peuvent être plus difficiles à utiliser.

Les dispositifs de bouclage matériel présentent les inconvénients suivants pour les applications audio :

  • Tous les adaptateurs audio ne disposent pas de dispositifs de bouclage. Ainsi, les applications qui en dépendent ne fonctionneront pas sur tous les systèmes.
  • Avant qu’une application puisse enregistrer à partir d’un appareil de bouclage, l’utilisateur doit identifier l’appareil de bouclage et l’activer à utiliser.

Différents fournisseurs attribuent différents noms à leurs dispositifs de bouclage matériel. Les noms suivants sont des exemples :

  • Mix stéréo
  • Mixage Waveout
  • Sortie mixte
  • Ce que vous entendez

L’absence de noms standardisés peut entraîner des difficultés à identifier un dispositif de bouclage dans une liste de noms de dispositifs.

Un dispositif de bouclage matériel est un dispositif de capture. Par conséquent, si un adaptateur prend en charge un dispositif de bouclage, une application audio peut enregistrer à partir de du dispositif de la même façon qu’elle enregistre à partir d’un autre dispositif de capture.

Par exemple, si vous sélectionnez un dispositif de bouclage matériel pour être le dispositif de capture par défaut, vous pouvez utiliser la fonction RecordAudioStream (sans modification) dans l’exemple de code de Capture d’un flux pour capturer le flux à partir du dispositif. (Vous pouvez également utiliser une API audio héritée, telle que les fonctions multimédia Windows waveInXxx, pour capturer le flux à partir du dispositif.)

Si votre adaptateur audio contient un dispositif de boucle matérielle, vous pouvez utiliser le panneau de configuration multimédia Windows, Mmsys.cpl, pour désigner le dispositif comme dispositif de capture par défaut. La procédure comporte trois étapes :

  1. Pour exécuter Mmsys.cpl, ouvrez une fenêtre d’invite de commandes et entrez la commande suivante :

    control mmsys.cpl
    

    Vous pouvez également exécuter Mmsys.cpl en cliquant avec le bouton droit sur l’icône du haut-parleur dans la zone de notification, située à droite de la barre des tâches, puis en sélectionnant Appareils d’enregistrement.

  2. Une fois la fenêtre Mmsys.cpl ouverte, cliquez avec le bouton droit n’importe où dans la liste des appareils d’enregistrement et vérifiez que l’option Afficher les appareils désactivés est cochée. (Sinon, si le dispositif de bouclage est désactivé, il n’apparaîtra pas dans la liste.)

  3. Parcourez la liste des dispositifs d’enregistrement pour localiser le dispositif de bouclage (s’il existe). Si le dispositif de bouclage est désactivé, activez-le en cliquant avec le bouton droit sur le dispositif et en cliquant sur Activer.

  4. Enfin, pour sélectionner le dispositif de bouclage comme dispositif de capture par défaut, cliquez avec le bouton droit sur le dispositif, puis cliquez sur Définir comme dispositif par défaut.

WASAPI prend en charge l’enregistrement de bouclage, que le matériel audio contienne un dispositif de bouclage ou que l’utilisateur ait activé le dispositif.

Windows Vista fournit la gestion des droits numériques (DRM). Les fournisseurs de contenu s’appuient sur DRM pour protéger leur musique propriétaire ou tout autre contenu contre la copie non autorisée et d’autres utilisations illégales. De même, un pilote audio approuvé n’autorise pas un dispositif de bouclage à capturer des flux numériques qui contiennent du contenu protégé. Windows Vista autorise uniquement les pilotes approuvés à lire du contenu protégé. Pour plus d’informations sur les pilotes approuvés et la gestion des droits numériques, consultez la documentation du DDK Windows.

Le bouclage WASAPI par défaut contient la combinaison de tout l'audio en cours de lecture, quelle que soit la session Terminal Services d'où provient l’audio. Par exemple, vous pouvez exécuter un client de bouclage dans un service s’exécutant dans la session 0 et capturer l’audio de toutes les sessions utilisateur, ainsi que l’audio lu à partir de la session 0.

Le Bureau à distance permet de rediriger l’audio vers le client. Cette opération est implémentée en créant de nouveaux appareils audio qui apparaissent uniquement pour cette session.

Gestion des flux