0

Windows で複数のサウンド カードに出力することはできますか?

portaudio は、Windows でサウンド カードを介して再生する唯一の方法のようですが、portaudio には、出力するデバイスを選択するメカニズムがありません。あったとしても、複数の出力を開くことができるかどうかは明らかではありません。

現在、VLCを使用してサウンドカードに出力するハックを使用しています:

output.external(
  %mp3(bitrate=320,stereo_mode="stereo"),
  '"C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe" -vvv --config C:\vlc\vlcrc-remote1 -',
  remote1
)

output.external(
  %mp3(bitrate=320,stereo_mode="stereo"),
  '"C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe" -vvv --config C:\vlc\vlcrc-remote2 -',
  remote2
)

各 VLC プロファイルには、デフォルトで異なるサウンド デバイスが設定されています。明らかに、これは PCM に切り替えることで改善される可能性がありますが、外部プロセスの問題全体を完全にスキップできれば、それは素晴らしいことです.

4

1 に答える 1

2

これはおそらく今では手遅れです...

これを一晩中 (数時間) 探し、PortAudio と Liquidsoap のソース コードを掘り下げた結果、LS が Pa_OpenDefaultStream() を使用して 1 つのストリームのみを開くことを確認しました。LS のインターフェイスを介して PA ID を input または output.portaudio に渡すことはできません。サウンド マッパー (Windows の既定のデバイス) であるデバイス 0 に常に既定で設定されます。

ただし、すべてが失われるわけではありません。使用する入力/出力を PortAudio に伝えるために、LS を実行する前に環境変数を渡すことができます。

set PA_RECOMMENDED_OUTPUT_DEVICE=x
set PA_RECOMMENDED_INPUT_DEVICE=x

x は PA デバイス参照です。デバイス参照を見つけるには、実行時に results.txt を生成する pa_devs.exe ( http://www.w1hkj.com/alpha/temp/pa_devs.exeでコピーを見つけました) のコピーが必要です。このファイルには、必要な ID が含まれています。[ヘルプ] > [オーディオ デバイス情報] を選択して、Audacity で ID を取得することもできます。

したがって、理論的には、次のように複数の出力を行うことができます。

setenv("PA_RECOMMENDED_OUTPUT_DEVICE","13")
streamout1 = output.portaudio()
setenv("PA_RECOMMENDED_OUTPUT_DEVICE","14")
streamout2 = output.portaudio()

これがうまくいくかどうかはわかりませんが、試してみる価値はあります!これが機能しない場合、アプリケーションで機能する場合は、いつでも 2 つの Liquidsoap インスタンスを異なる設定で実行できます。

于 2015-08-17T02:14:21.390 に答える