30

再生されているサウンド(つまり、マイクなどの入力デバイスではなく、サウンドカードからのすべてのもの)をプログラムでキャプチャする方法を知っている人はいますか?

4

4 に答える 4

24

Windows について話していると仮定すると、これを行うには基本的に 3 つの方法があります。

1 つ目は、オーディオ デバイスのメイン出力を録音ソースとして開くことです。これは、ドライバーがサポートしている場合にのみ可能ですが、最近ではほとんどの場合サポートされています。仮想デバイスの一般的な名前は、"What You Hear" または "Wave Out" です。キャプチャを行うには、適切な API (MSDN の WaveIn または DirectSound を参照) を使用する必要があります。

2 番目の方法は、オーディオ ストリームが物理デバイスに到達する前にインターセプトできるフィルター ドライバーを作成することです。繰り返しますが、この手法は、適切なドライバー トポロジを備えたデバイスに対してのみ機能し、確かに気弱な人向けではありません。

これは、これらのオプションのどちらも、任意のハードウェアを備えた PC で動作することが保証されないことを意味します。

最後の代替手段は、 Virtual Audio Cableなどの仮想オーディオ デバイスを使用することです。このデバイスが Windows でデフォルトの再生デバイスとして設定されている場合、正常に動作するすべてのアプリはそれを介して再生されます。その後、同じデバイスから録音して、合計出力をキャプチャできます。記録するアプリケーションが使用するデバイスを制御できる限り、このオプションは常に機能します。

これらの手法にはすべて長所と短所があります。どちらがニーズに最も適しているかを判断するのはあなた次第です。

于 2008-10-17T13:45:50.247 に答える
3

Waveform Audio Interface を使用できます。PInvoke ごとにアクセスする方法に関するMSDN の記事があります。

再生中の音をキャプチャするには、マイクの代わりに再生デバイスを開くだけです。もちろん、出力用ではなく、入力用に開きます;-)

于 2008-10-17T09:57:55.043 に答える
0

デバイスのステレオ ミックスを有効にする必要があります。これを行うと、直接音がこのデバイスを見つけます。

于 2009-02-23T23:16:35.713 に答える
0

OSX を使用していた場合、Rogue Amoeba の Audio Hijack Pro がおそらく最も簡単な方法です。

とにかく、オーディオをラインインにループバックして録音してみませんか? これは非常に簡単な解決策です。オーディオ出力ジャックとライン入力ジャックにケーブルを差し込むだけで、録音を開始できます。

于 2008-11-04T20:07:40.020 に答える