LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 829|回复: 1

解决vmplayer只能用oss设备/dev/dsp的问题,当然其他软件也可以用。

[复制链接]
发表于 2009-5-21 03:39:08 | 显示全部楼层 |阅读模式
网上找到个oss2pulse 和 oss2jackd,它的方法是软件虚拟一个/dev/dsp,所有普通oss软件都可以同时发声了。当然你别想vmplayer会有多好的音质,不过比起padsp、aoss、LD_PRELOAD这些方法方便多了。

我是看这里做为起点,http://linuxmusicians.com/viewtopic.php?p=5862
能免则免的原则,所以不用jackd,用pulseaudio与桌面系统保持一致,下面说的也是用oss2pulse。

在这里简化地讲讲:
前提条件:

  • pulseaudio已经在运行;
  • 最好有编译好的内核源码(安装linux-headers可能也行);
  • 安装了各种编译工具(automake、make、gcc等);
  • 在root用户下进行。

(一)安装fusd
<1>
准备补丁,到 http://rapidshare.com/files/2348 ... tchset.tar.bz2.html 下载thorgal_patchset.tar.bz2
解压到某处,例如我放在/tmp,共3个文件:
30-fusd.rules (udev规则文件)
patch-fusd.txt (fusd在内核2.6.29下编译需要这个补丁)
patch-oss2jack-0.25.txt
<2>
编译安装,下面命令应该比较简单,不解释了:
apt-get install fusd-kor-source
cd /usr/src
tar xjvf fusd-kor.tar.bz2
cd modules/fusd-kor/
cat /tmp/patch-fusd.txt | patch -p1
make
make install

#fusd的udev配置文件
cp /tmp/30-fusd.rules /etc/udev/rules.d/
/etc/init.d/udev restart

#开机就加载kfusd
echo kfusd >> /etc/modules
#禁用alsa的两个oss模块
echo "alias snd-pcm-oss off" >> /etc/modprobe.d/aliases
echo "alias snd-mixer-oss off" >> /etc/modprobe.d/aliases

#现在就手动加载kfusd
rmmod snd-pcm-oss snd-mixer-oss
modprobe kfusd

(二)安装oss2pulse
下面也是一堆命令:
cd /usr/src
#下载oss2pulse
wget http://web.mit.edu/xiphmont/Publ ... 2pulse-20070111.tgz
tar xzvf oss2pulse-20070111.tgz
cd oss2pulse20070111
#纠正一下连接的路径
ln -s -f /usr/share/automake-1.10/compile ./
ln -s -f /usr/share/automake-1.10/depcomp ./
./configure
make
make install

#运行oss2pulse,不要放在开机时运行,最好让这条命令在启动pulseaudio之后才运行
oss2pulse -d
好了,现在ls -l /dev/dsp /dev/mixer,应该会看见新的设备
crw-rw---- 1 root audio 249, 0 05-21 02:52 /dev/dsp
crw-rw---- 1 root audio 248, 0 05-21 02:52 /dev/mixer

完毕。

题外话:
关于xmms2和mpd使用alsa的dmix多音频流插件cpu占用较高,原因是dmix要对各音频流转换采样率所致。也有缓解方法,这里不多说了,上网找吧;pulseaudio如何用dmix设备发声,也不在这里说了。
我看回以前自己的帖子,太多内容想一次讲明白,反而罗里罗嗦,什么都讲不清。

为免大家麻烦,我还是把补丁上传到这里好了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-6-5 06:18:24 | 显示全部楼层
晕死,oss2pulse录音不成功,一录音则会占cpu100%,很辛苦才能把oss2pulse结束掉。
再试oss2jack,相比之下,pulseaudo实时性真是垃圾,但一样不能录音。
但即使替换vmware-vmx,用LD_PRELOAD=libaoss.so运行,录音也会一卡一卡的。

现实……离完美还差10万9千里。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表