我想使用 ALSA 将一些音频数据播放到 PCM 设备。作为示例,我已下载此示例示例并在我的 PC 中运行它。当当前没有其他进程正在使用声卡时,它可以正常工作。但是当其他进程使用音频设备(即媒体播放器播放歌曲)并显示以下错误时,它不会播放任何内容 -
Playback open error: Device or resource busy
查看此示例的源代码,我可以说第 882 行的snd_pcm_open函数引发了此错误。它发现设备很忙,因为另一个进程正在使用它。
我也尝试了相反的方式 - 首先开始示例然后尝试开始一首歌。在这种情况下,媒体播放器保持空闲状态,在进度条旁边显示“空闲”(我使用的是 Banshee)。我假设snd_pcm_open
获得设备资源的专有权,因此没有其他进程可以使用它。
但我不想那样。我想在不需要任何专有权的情况下向音频设备播放声音,以便 PC 中的其他进程可以共享同一设备以输出音频数据。
我怎样才能做到这一点?如何打开 PCM 设备,以便其他进程也可以共享同一设备?