是否可以在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来改进,但如果我可以简单地完全跳过整个外部过程问题,那就太棒了。
答案 0 :(得分:2)
现在可能已经太晚了......
一直在寻找这一晚(几个小时)并深入研究PortAudio和Liquidsoap的源代码,我已经确定LS利用Pa_OpenDefaultStream()来打开一个流。通过LS'接口无法将PA ID传递给input或output.portaudio。它将始终默认为设备0,它是声音映射器(Windows默认设备)。
但是,一切都没有丢失,为了告诉PortAudio使用哪个输入/输出,你可以在运行LS之前传递一个环境变量:
set PA_RECOMMENDED_OUTPUT_DEVICE=x
set PA_RECOMMENDED_INPUT_DEVICE=x
其中x是PA设备参考。要查找设备引用,您需要一份pa_devs.exe(我在此处找到一份副本http://www.w1hkj.com/alpha/temp/pa_devs.exe),该文件在运行时会生成results.txt。该文件包含您需要的ID。您还可以通过选择帮助>音频设备信息
来获取Audacity的ID所以理论上你可以像这样做多个输出:
setenv("PA_RECOMMENDED_OUTPUT_DEVICE","13")
streamout1 = output.portaudio()
setenv("PA_RECOMMENDED_OUTPUT_DEVICE","14")
streamout2 = output.portaudio()
我不确定这是否有效,但值得一去!如果它不起作用,如果这适用于您的应用程序,您可以始终在不同的设置中运行两个liquidsoap实例。