如何解决openFrameworks和其他音频应用程序之间的冲突
How can I solve a conflict between openFrameworks and other audio applications?
当我尝试执行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已知的。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 用c++阅读音频
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么这个音频包络不能通过开关的情况?
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 如何使用QT或Linux上的任何其他CPP框架播放WMA音频文件
- 如何在不更改持续时间的情况下更改音频的音高,而无需在Android中使用OpenSL ES或其他C / C++代码
- 使用 C++ 在 Linux 中播放.mp3或其他音频文件
- 从 flv 视频(或任何其他视频)中提取音频的算法.怎么做
- FreeSWITCH:有没有办法通过本机API从其他分支获取音频流?
- 如何解决openFrameworks和其他音频应用程序之间的冲突