2009-08-16 12 views
2

私はオーディオに関するプログラミングについての最初のことを知らないので、私に同行してください。サウンドドライバで再生されているファイル(またはファイル)を特定する方法はありますか?または、サウンドドライバで再生されるオーディオファイルの現在のスタックを調べる方法ですか?再生中のオーディオの起源を確認する

私は基本的に、オーディオバスに送信されたデータをスニッフィングして、ハードドライブ上のどこにあるのかを判断したいと考えています。可能であれば、私は.NETでこれを行う方法を知りたいです。

答えて

2

私はこれが可能ではないと思います。 Windows(DirectSound、waveOut *など)で再生するAPIは、オーディオデータをファイルではなくサンプル値の配列として処理します。 SoundPlayerのような高級クラスは、ファイルを開き、ファイル内のデータを配列に読み込んだ後、配列を再生メソッドに渡すので、オーディオを再生しても元のファイルの場所はわかりません。

私の独自のプログラム(ソフトウェアシンセサイザー)は、メモリ内に純粋にオーディオを生成しますが、プロセスの任意の時点でファイルが含まれないため、ファイルの場所を特定する方法はありません(ただし、 1つ)。

ファイルを再生するクラスが、そのクラスを使用して再生されたファイルに関するこの情報を取得できるAPIを公開している可能性がありますが、このようなことは一度も見たことがありません(SoundPlayerでは確かに)。

Larry Ostermanはこのサイトのユーザーで、Windowsオーディオシステムのエンジニアであるため、もしあなたが注意を喚起できれば誰でもこの質問に対する答えを知ることができます。しかし、私はこれが不可能であると腎臓に賭けるだろう。

+1

私はWindowsオーディオシステムの背後にいるエンジニアの一人です。:)しかし、MusiGenesisは100%正確です。オーディオの「ソース」は、オーディオスタックのレベルでは意味がありません。たとえば、ほとんどのゲームオーディオは、ゲームデータとして保存された一連の事前レンダリングされたサウンドから生成され、オーディオエンジンにヒットする前に、 。 –

関連する問題