我有一个使用 PortAudio 的程序。目前我正在启动它Pa_OpenDefaultStream(&stream, 0, 2, paFloat32, 44100, 256, audioCB, udata)
,但是当我编译并运行我的程序时,如果另一个程序正在运行(例如音乐播放器),它不会播放声音。错误字符串是PortAudio error: Device unavailable
我认为我需要改为运行Pa_OpenStream
,但我不确定我应该传递什么以使其与其他程序一起运行。
作为参考,我尝试打印出可用设备上的信息,但我不确定如何处理这些信息。
Device 0
name /dev/dsp
hostAPI 0
maxInputChannels 16
maxOutPutChannels 0
defaultLowInputLatency 0.011610
defaultLowOutputLatency -0.117208
defaultHighInputLatency 0.046440
defaultHighOutputLatency 0.000000
defaultSampleRate 44100.000000
Device 1
name /dev/dsp1
hostAPI 0
maxInputChannels 16
maxOutPutChannels 0
defaultLowInputLatency 0.011610
defaultLowOutputLatency -0.117208
defaultHighInputLatency 0.046440
defaultHighOutputLatency 0.000000
defaultSampleRate 44100.000000
Default Device -1
在写这个问题时,我还注意到 maxOutputchannels 的变化取决于是否有另一个程序试图播放声音。至少我认为这是造成差异的原因。我在关闭的另一个浏览器选项卡中有一个暂停的 youtube 视频,当我现在重新运行我的程序时,它会打印:
Device 0
name /dev/dsp
hostAPI 0
maxInputChannels 16
maxOutPutChannels 16
defaultLowInputLatency 0.011610
defaultLowOutputLatency 0.011610
defaultHighInputLatency 0.046440
defaultHighOutputLatency 0.046440
defaultSampleRate 44100.000000
Device 1
name /dev/dsp1
hostAPI 0
maxInputChannels 16
maxOutPutChannels 0
defaultLowInputLatency 0.011610
defaultLowOutputLatency 0.011610
defaultHighInputLatency 0.046440
defaultHighOutputLatency 0.046440
defaultSampleRate 44100.000000
Default Device 0