如何解决openFrameworks和其他音频应用程序之间的冲突

How can I solve a conflict between openFrameworks and other audio applications?

本文关键字:音频 其他 应用程序 之间 冲突 openFrameworks 何解决 解决      更新时间:2023-10-16

当我尝试执行openFrameworks附带的audioOutputExample时,我会得到

RtApiAlsa::getDeviceIno:snd_pm_open设备错误(hw:0,0),设备或资源繁忙。

RtApiAlsa::probeDeviceOpen:pcm设备(hw:0,0)不会打开以进行输出。

RtApi::流未打开!

进程返回0(0x0)执行时间:3.462秒按ENTER键持续

  • Rhythmbox正在播放
  • Rhythmbox最近播放过(不到5秒前)
  • Firefox有一个带有Grooveshark的选项卡,可以播放曲调,也可以暂停
  • Groovshark选项卡最近已关闭(大约5秒前)
  • Firefox有一个带有Youtube视频的选项卡,可以播放也可以暂停
  • Youtube选项卡最近已关闭(大约5秒前)

否则,即使我以前使用过Rhythmbox、Grooveshark或Youtube,这个例子也能很好地工作。

如何解决此冲突以允许同时使用audioOutputExample和Rythmbox。

附言:我在Ubuntu 11.04上,使用openFrameworks_v0062_linux64_FAt。。。

这只是一个猜测,因为我不了解Linux上的OF,但我认为OF需要访问底层ALSA设备才能获得RT功能。因此,它不能与PulseAudio(或他们现在使用的任何东西)共享设备,这允许在应用程序之间共享音频设备。你可以试着看看JACK在PulseAudio和你的ALSA程序之间多路传输。

我找到了一个解决方案。问题是,我注册了两个内部声音设备-HDMI和PCH。HDMI设备始终分配给卡0,可以通过键入进行检查

aplay -l 

进入终端。这将列出不同的设备。

然后我使用更改了alsa配置

gksudo gedit /etc/modprobe.d/alsa-base.conf

并在最后添加

options snd-hda-intel index=-2

从而迫使HDMI被分配给card1,而另一个设备被分配给card0。另一种选择是放置

options snd-hda-intel id=PCH,HDMI index=0,1

分配卡片索引。然而,我在这里读到HDMI,PCH,这并不适用于所有人。

注意此方法的详细信息取决于您计算机中的设备。通过键入aplay-l查找alsa已知的。

相关文章: