-1

DirectShowも使用するWPFベースのアプリケーションを開発しています。選択したデバイスのいずれかでビデオのオーディオをチャネリングする必要がある機能を実装する必要があります。私の問題を明確にするために、システムに多数のオーディオ デバイスが接続されているとします。そのため、ユーザーは、選択したデバイスでビデオ ファイルからオーディオを再生できる必要があります。また、システムに接続されているオーディオ デバイスを列挙するにはどうすればよいですか? どうすればオーディオをさまざまなデバイスに送ることができるのかわかりません。私は DirectShow 開発に不慣れです。これを乗り越えるのを手伝ってください。アイデアの提案は大歓迎です。

ありがとう。

4

1 に答える 1

1

MSDNから:

ユーザーのシステムで使用可能なオーディオ デバイスを列挙するには、オーディオ レンダラー カテゴリ (CLSID_AudioRendererCategory) で ICreateDevEnum インターフェイスを使用します。オーディオ デバイスごとに、オーディオ レンダラー カテゴリには 2 つのフィルター インスタンスが含まれます。これらの 1 つは DirectSound レンダラーに対応し、もう 1 つはオーディオ レンダラー (WaveOut) フィルターに対応します。DirectSound インスタンスのフレンドリ名は "DirectSound: DeviceName" です。ここで、DeviceName はデバイスの名前です。WaveOut インスタンスのフレンドリ名は DeviceName です。

オーディオ レンダラー カテゴリには、「既定の DirectSound デバイス」と「既定の WaveOut デバイス」という名前の 2 つの追加のフィルター インスタンスが含まれています。これらは、ユーザーがコントロール パネルで選択したデフォルトのサウンド デバイスに対応しています。これらは実際には、前の段落で説明したペアの 1 つにマッピングされています。たとえば、システムにデバイス A とデバイス B の 2 つのオーディオ デバイスがある場合、オーディオ レンダラー カテゴリには次のものが含まれます。

.NET では、[おそらく] DirectShow.NET ライブラリを介してこの API へのラッパーがあります。

于 2012-06-04T07:44:04.740 に答える