[tip] 使OSS程序不独占声卡
时间:2008-10-17
来源:互联网
1、使用ALSA声卡驱动(新近驱动)
2、声卡不支持硬件混音(这种情况,ALSA新进驱动,默认支持 dmix 软件混音)
3、启用OSS兼容模式(加载snd_pcm_oss、snd_mixer_oss内核模块,或编译到内核)
4、安装有alsa-oss软件包(需要使用其中的 aoss)
OSS程序默认以独占方式使用声卡,这可能与系统里其它软件包冲突。
一个例子如下:
某日,正播放背景音乐(mplayer -ao alsa xxx.flac),同时运行程序 kvm(kvm -m 384 -localtime -soundhw all -net nic,model=e1000 -net user -redir tcp:2222::22 -hda hd.img),发现 kvm 无法使用声卡。
关闭背景音乐后,重新运行 kvm,kvm 可以使用声卡,但别的程序均无法使用声卡。
此时,用 fuser 查看与声卡有关的设备(fuser /dev/snd/* /dev/dsp*),发现 kvm 进程正占用 /dev/dsp。
至此,确认问题是由于 kvm 只能以独占方式使用声卡引起。
kvm 这么新近的软件难道只能以 OSS 方式使用声卡?
查,从源码查,发现 kvm 是支持 ALSA 的。
原来问题出在配置编译 kvm 时,没有使能 ALSA (--enable-alsa)。
重新配置、编译、安装 kvm 很简单,不过还是下次升级时再做修改好些,最好在不重编译的情况下解决问题。
google,得到
http://alsa.opensrc.org/index.php/Dmix
其中 1.4 1.5 1.6 正好可以解决问题。
简单的说,建立配置文件 ~/.asoundrc
cat > ~/.asoundrc << eof pcm.dsp0 { type plug slave.pcm "dmix" } # mixer0 can stay unchanged, because # it isn't used anyway, I guess ;) ctl.mixer0 { type hw card 0 } eof
aoss kvm -m 384 -localtime -soundhw all -net nic,model=e1000 -net user -redir tcp:2222::22 -hda hd.img
OSS程序均可如上解决混音问题。
作者: 聚焦深空 发布时间: 2008-10-17
修正:不需要~/.asoundrc
作者: 聚焦深空 发布时间: 2008-10-17
作者: 晨想 发布时间: 2008-10-17
无奈了...
作者: maitr 发布时间: 2008-10-17
作者: 晨想
alsa在内核的某个版本后,dmix 是默认打开了的,我也是无意中忘记在哪里看到过。~~。。
|
中原文
NOTE: For ALSA 1.0.9rc2 and higher you don't need to setup dmix. Dmix is enabled as default for soundcards which don't support hw mixing.
作者: 聚焦深空 发布时间: 2008-10-17
作者: 晨想 发布时间: 2008-10-17
作者: maitr
用aoss跑mplayer没问题,用aoss跑vmware还是提示音频设备被占用..
无奈了... |
用aoss跑mplayer要确保mplayer使用oss方式
aoss mplayer -ao oss axxx &
aoss mplayer -ao oss bxxx &
至少要同时有两个播放进程,并且能听到混音效果才行的。
您什么声卡?内置、独立?有否硬件混音功能?
vmware 多年前已不用,其以什么方式使用声卡,不清楚。
既然 kvm 能以此方式运行,vmware应当也可以,请首先定位问题。
作者: 聚焦深空 发布时间: 2008-10-17
声卡是USB的,Burr-Brown Japan PCM2702
其他应用程序都没遇见问题,唯有vmware一定要独占/dev/dsp...
我去重新编下内核再试试。
谢谢哈~~
-----------------------
还是不行.. aoss mplayer -ao oss xxx正常播放了,也看到是在使用oss驱动,
只是vmware依然不卖帐.. aoss vmware,还是找不到声卡,如果手动指定为/dev/dsp,vmware就会独占声卡..
以前也在网上找了好久,貌似是vmware的问题
算了,就那样吧,要不是看见您这个帖子,我都没想再试呢=.=
作者: maitr 发布时间: 2008-10-17
作者: maitr
- - 经您一说确实发现问题了,忽然想起我的内核没开oss兼容模式...
声卡是USB的,Burr-Brown Japan PCM2702 其他应用程序都没遇见问题,唯有vmware一定要独占/dev/dsp... 我去重新编下内核再试试。 谢谢哈~~ ----------------------- 还是不行.. aoss mplayer -ao oss xxx正常播放了,也看到是在使用oss驱动, 只是vmware依然不卖帐.. aoss vmware,还是找不到声卡,如果手动指定为/dev/dsp,vmware就会独占声卡.. 以前也在网上找了好久,貌似是vmware的问题 算了,就那样吧,要不是看见您这个帖子,我都没想再试呢=.= |
或者您可以拔掉USB声卡再试试,您机子上应该还有别的声卡吧,新近的机子想找块不带集成声卡的都难,您的问题也许是多块声卡引起的。
最不济,如您只有这么一块USB声卡,可能没几个人能帮不上什么忙。 您如能提供声卡硬件,也许能帮您解决问题。
最后一种可能,记得 vmware 是需要 内核模块 和 初始化脚本 支持的,如果其对声卡的使用是通过后台进程实现的,那就要想法用 aoss 包装。 请用 fuser /dev/dsp* 确定具体占用声卡的进程。
作者: 聚焦深空 发布时间: 2008-10-17
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28