我想使用ALSA将一些音频数据播放到PCM设备上。例如,我已经下载了这个示例程序并在我的PC上运行它。当没有其他进程正在使用声卡时,它可以正常工作。但是当其他进程使用音频设备(例如,媒体播放器正在播放歌曲)时,它无法播放任何内容,并显示以下错误 -
Playback open error: Device or resource busy
通过查看这个示例的源代码,我可以说位于第882行的snd_pcm_open函数引发了这个错误。它发现设备正忙于另一个进程正在使用它。
我还尝试了反过来的方式——先启动示例,然后再尝试启动歌曲。在这种情况下,媒体播放器保持闲置状态,在进度条旁边显示“idle”(我正在使用Banshee)。 我假设snd_pcm_open
获得了设备资源的独占权,使得其他进程无法使用它。
但我不想要那样。我想将声音播放到音频设备上,而不需要任何独占权限,这样PC中的其他进程就可以共享同一设备以输出音频数据。
我该怎么做?如何打开PCM设备,以便其他进程也可以分享同一设备?