再生中のオーディオをキャプチャするにはどうすればよいですか?
-
03-07-2019 - |
質問
再生中のサウンド(つまり、マイクなどの入力デバイスではなく、サウンドカードからのすべてのもの)をプログラムでキャプチャする方法を誰もが知っていますか。
解決
Windowsについて話していると仮定すると、これを行うには基本的に3つの方法があります。
1つ目は、オーディオデバイスのメイン出力を録音ソースとして開くことです。これは、ドライバーがサポートしている場合にのみ可能ですが、最近ではほとんどのユーザーがサポートしています。仮想デバイスの一般的な名前は「What You Hear」です。または「Wave Out」。適切なAPI(MSDNのWaveInまたはDirectSoundを参照)を使用してキャプチャを行う必要があります。
2番目の方法は、物理デバイスに到達する前にオーディオストリームをインターセプトできるフィルタードライバーを作成することです。繰り返しますが、この手法は適切なドライバートポロジを備えたデバイスでのみ機能し、気弱な人には適していません。
これは、これらのオプションのいずれも、任意のハードウェアを備えたPCで動作することを保証されないことを意味します。
最後の選択肢は、仮想オーディオケーブルなどの仮想オーディオデバイスを使用することです。このデバイスがWindowsでデフォルトの再生デバイスとして設定されている場合、正常に動作するすべてのアプリがそれを介して再生されます。その後、同じデバイスから記録して、合計出力をキャプチャできます。記録するアプリケーションが使用するデバイスを制御している限り、このオプションは常に機能します。
これらの手法にはすべて長所と短所があります。どちらがあなたのニーズに最も適しているかはあなた次第です。
他のヒント
Waveform Audio Interfaceを使用できます。 MSDNの記事 PInvokeごとにアクセスする方法について。
再生中のサウンドをキャプチャするには、マイクではなく再生デバイスを開くだけです。もちろん、出力用ではなく、入力用に開きます;-)
OSXを使用している場合、 Rogue AmoebaのAudio Hijack Pro がおそらく最も簡単な方法です。
とにかく、オーディオをラインインにループバックして録音してみませんか?これは、非常に簡単なソリューションです。オーディオ出力ジャックとラインインジャックにケーブルを差し込んで録音を開始します。
デバイスのステレオミックスを有効にする必要があります。これを行うと、直接音がこのデバイスを見つけます。