41

デフォルトの出力 (出力 IOAudioStream) からオーディオ データを取得し、それを入力 IOAudioStream に変換する仮想オーディオ デバイスを作成したいと考えています。

見つけたほとんどの例を調べましたが、出力 IOAudioStream を入力にコピーする機能のみを実装しています。つまり、オーディオ デバイスが出力として選択されている場合にのみ、オーディオを入力ストリームに変換します。

ScreenFlow は、仮想ドライバーを作成する kext をインストールすることで、コンピューターのオーディオを録音できるため、これは可能なはずです。

デフォルト出力からオーディオ データにアクセスし、それを仮想ドライバーに送信するにはどうすればよいですか?

4

3 に答える 3

8

追加の調査の後、ここに私が思いついたいくつかの理論的手法を示します。これにより、目標を達成できる可能性があります。

  1. Prosoft Engineering のHear製品と同様に、.kext (カーネルモードの仮想ドライバー) ではなく、HAL プラグイン (ユーザーモードの仮想ドライバー) を作成できます。Apple には「SampleHardwarePlugIn」と呼ばれるサンプル HAL プラグインがあり、 PulseAudioにも同じプラグインがあります。しかし、彼の方法では、あらかじめミックスされたシステム サウンド ストリームにアクセスできるとは思えません。さまざまなアプリケーション (サウンドの再生には CoreAudio を使用する必要があります) からすべてのストリームを収集し、疑似システム サウンド キャプチャのためにそれらを混合する必要があります。

  2. ユーザー操作から隠されている[1] [2]仮想オーディオ デバイスを作成します。ユーザーが既定のサウンドをキャプチャする場合は、非表示の仮想デバイスと現在の既定のサウンド デバイスを含む集合デバイスをプログラムで作成します。この集約デバイスをデフォルトの出力として一時的に設定します。このようにして、デフォルトのサウンドをキャプチャして聞くことができます。
    補足: Mac OS X で非表示のデバイスをデフォルトの出力デバイスとしても設定できる場合、システム環境設定は選択されたデバイスとして何を表示しますか? 代わりに、セカンダリ出力デバイスが選択されていると表示されている場合は、何も変更されていないという暗示が追加されています。

于 2013-09-08T20:10:41.943 に答える