Comment capturer des données PCM de Wave Out

Comment serait-il possible de capturer l’audio par programmation? Je suis en train de mettre en œuvre une application qui diffuse en temps réel le bureau sur le réseau. La partie vidéo est terminée. Je dois implémenter la partie audio. J’ai besoin d’un moyen d’obtenir les données PCM de la carte son pour alimenter mon encodeur (implémenté à l’aide de Windows Media Format).

Je pense que la réponse est liée aux fonctions openMixer (), waveInOpen () dans l’API Win32, mais je ne suis pas sûr de savoir exactement ce que je devrais faire.

Comment ouvrir le canal nécessaire et comment lire les données PCM?

Merci d’avance.

Je ne pense pas qu’il existe un moyen direct de le faire en utilisant le système d’exploitation – c’est une fonctionnalité qui peut (ou non) être présente sur la carte son. Certaines cartes son ont une interface de bouclage – Creative l’appelle “What U Hear”. Il vous suffit de sélectionner cette entrée plutôt que le microphone, et d’en enregistrer à l’aide du waveInOpen () que vous connaissez déjà.

Si la carte son n’a pas cette fonctionnalité, alors je pense que vous avez moins de chance que de faire quelque chose de fou, comme faire votre propre pilote. Ou vous pourriez convaincre vos utilisateurs de faire passer un câble de la sortie haut-parleur à l’entrée ligne 🙂

Les nouvelles API Windows Vista Core Audio prennent explicitement en charge cette fonction (appelée Loopback Recording), donc si vous pouvez vivre avec une application Vista uniquement, c’est la solution.

Consultez l’article sur l’ enregistrement en boucle sur MSDN pour obtenir des instructions sur la procédure à suivre.