Mac OS X virtual audio pilote
Je veux créer un virtual audio qui obtient des données audio à partir de la sortie par défaut (qui est une sortie IOAudioStream) et la convertit en un d'entrée IOAudioStream.
Je suis passé par la plupart des exemples que j'ai pu trouver, mais ils seulement d'implémenter une fonctionnalité de copier la sortie IOAudioStream à l'entrée d'un au plus. Qui signifie qu'il ne convertit les données audio d'un flux d'entrée si le périphérique audio est sélectionné comme sortie.
Cela devrait être possible, puisque ScreenFlow permet d'enregistrer de l'audio de l'ordinateur par l'installation d'un kext qui crée un pilote virtuel.
Comment puis-je accéder aux données audio à partir de la sortie par défaut et l'envoyer à mon pilote virtuel?
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à l'open-source WavTap, qui est une forme simplifiée de la fourche de l'open-source SoundFlower virtuel pilote de la carte son. C'est un .kext qui, je crois, n'a considérablement ce que vous voulez.
Pour référence, voici comment certains commerciaux populaires fermé les options de source de travail:
Rogue Amoeba est Audio Hijack Pro
-Système de capture audio via le code basé sur de l'open-source SoundFlower .kext
-Capture d'une application audio en la remplaçant par un "patch" cadre pour l'normale CoreAudio.cadre au lancement de l'application
-Capture d'une application en cours d'exécution de l'audio avec l'aide de la haxie "Application Enhancer" (APE) à partir de Unsanity
Ces fonctionnalités sont de la marque comme leur "Instantanée" fonction (InstantOn.kext).
Ambrosia Software WireTap Studio
-Capture audio du système et de l'application de l'audio par l'intermédiaire d'une maison .kext
Telestream de ScreenFlow
-Système de capture audio via un développé en interne .kext. (Version 2.x utilise varaudio.kext; la Version 3.x utilise TelestreamAudio.kext)
Macsome de Enregistreur Audio
-Méthode inconnue
Araelium du Groupe Screenflick
-Capture du système audio à l'aide de la SoundFlower .kext
Mise à JOUR #1
Après avoir lu les commentaires de l'auteur, il semble que l'objectif sous-jacent est d'être en mesure de capturer les sons du système sans la publication de la virtual audio pilote de dispositif (qui apparaissent dans le Système de la Préférence de la liste) et sans changer le périphérique de sortie par défaut (ou au moins l'apparence de l'appareil, qui a changé).
SoundFlower: Ajoute un périphérique audio à la liste lors de l'installation
WavTap: Ajoute un périphérique audio à la liste lors de l'installation; l'auto-sélectionne l'appareil lors de la WavTap application est démarrée; auto-désélectionne l'appareil lorsque l'application est à l'arrêt et sélectionne à nouveau l'appareil précédent
Audio Hijack Pro: Ajoute un périphérique audio uniquement lors de la capture audio sur le système par défaut le son est sélectionné; supprime le périphérique de son lors de la capture audio n'est plus sélectionnée et sélectionne à nouveau l'appareil précédent
WireTap Studio: Inconnu
ScreenFlow: Capte le son du système sans changer le courant de sortie par défaut de l'appareil et sans la publication de la virtual audio pilote comme un dispositif
Mise à JOUR #2
Une citation de Jeff Moore, un CoreAudio Apple ingénieur, en référence à des applications telles que l'Écoute électronique et Audio Hijack Pro:
"Il n'y a pas d'Api sur le système qui vous donnera la sortie de n'importe quelle application ou l'ensemble d'un mélange d'aller à la quincaillerie...[Capture de Son Système] n'est pas pris en charge par le Système et ces gens devaient être intelligent. Il n'y a rien qui vous empêche de faire la même chose, sauf à quel point vous êtes prêt à obtenir vos mains sales.
Le fait est, Mac OS X, le système audio a été conçu d'abord et avant tout pour la performance. Cela nous conduit à une conception où il n'est pas facile à prendre en charge les fonctionnalités que vous souhaitez sans imposer de pénalités. Donc, nous avons opté pour de meilleures performances sur le coût de ne pas être en mesure de fournir cette fonctionnalité."
Si vous voulez en lire plus sur le sujet, découvrez ces fils sur le CoreAudio API liste de diffusion:
"Écoute, CoreAudio de l'API, et le système de capture, et les kexts..."
"Une autre question sur la capture audio est lu par un logiciel"
"La capture audio en cours de lecture à l'aide de CoreAudio sur Mac"
""audio hijack'"
"système de surveillance de la sortie audio comme robinet fil"
"Capturer l'audio de sortie à un fichier"
"La Mise En Miroir De Sortie Audio"
"Le système d'enregistrement audio"
Pertinentes, AFIN Questions:
Masquer le périphérique Audio à l'aide de sans code de kext
Si longue histoire courte, vous n'êtes pas susceptibles de trouver des exemples de Apple que cela, et vous n'êtes pas susceptibles de trouver un code source ouvert qui accomplit ce soit, sauf si quelqu'un se sent très généreux. Il semble être trop précieuse de renseignements.
Après d'autres recherches, voici quelques techniques théoriques, je suis venu avec qui peut vous permettre d'atteindre votre objectif:
Similaire à Prosoft Engineering Entendre produit, vous pouvez créer une couche d'abstraction matérielle plugin (user-mode driver virtuel) plutôt qu'une .kext (kernel-mode driver virtuel). Apple a un exemple de HAL plugin appelé "SampleHardwarePlugIn" et PulseAudio a un ainsi. Toutefois, avec sa méthode, je ne pense pas que vous avez accès à une pré-mélangé système de flux audio. Vous devez rassembler tous les flux à partir de diverses applications (qui doit utiliser CoreAudio pour jouer les sons) et les mélanger ensemble pour les pseudo système de prise de son.
Créer un virtual audio qui est caché [1][2] à partir de l'interaction de l'utilisateur. Lorsque l'utilisateur souhaite capturer le son par défaut, créer par programmation d'un périphérique agrégé qui comprend votre cachés de périphérique virtuel et de l'actuel périphérique audio par défaut. Temporairement mis de cet agrégat de périphérique de sortie par défaut. De cette manière, vous êtes capable à la fois de capturer le son par défaut et l'entendre.
Remarque: Si Mac OS X permet d'obtenir un caché appareil aussi être défini comme périphérique de sortie, ce serait le Système de Préférences de montrer que le périphérique sélectionné? Si elle montre plutôt que le secondaire périphérique de sortie sélectionné, puis vous avez ajouté l'allusion au fait que rien n'a changé.