Neoshine linux 3.0下混音播放解决方案

在NeoLinux 3.0(本文中Neoshine linux 3.0的缩写)的默认情况下,你同时只能使用一个音乐播放器听歌曲,这是因为在你使用多个播放器时,其他的播放器都会因第一个音乐播放器占用音频设备资 源,不能正常发声,因而提示你无法播放;这个问题其实一直以来在困扰着linux下的用户,win下却从来没有这个问题,你可以边打游戏边听音乐,互不影 响,而这种基本需求在linux下却成为了一个奢望,不过,linux下已经有不少人开始准备解决这个问题;

AC’97的声卡实际上并不支持硬件混音,因此我们需要通过增加对dmixer的支持来间接支持混音;ALSA 1.0.9及其以上版本已经可以支持混音了,因此如果你的内核版本号是2.6.16,或以上,默认是都可以支持混音的,不过前提是你要使用除oss之外的 其他驱动,因为alsa对oss的模拟不支持多线程输出音频流,导致不能混音;

对于ALSA版本号在1.0.9以下的,我们可以通过增加一个配置文件来达到使得alsa具有混音功能的目的;配置文件名是 /etc/asound.conf,文件内容为:

pcm.!default {
type plug
slave.pcm "dmixer"
}

pcm.dsp0 {
type plug
slave.pcm "dmixer"
}

pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
# period_time 0
# period_size 1024
# buffer_size 8192
rate 44100
}
bindings {
0 0
1 1
}
}

ctl.dmixer {
type hw
card 0
}

我们通过比较mplayer播放音乐的成功与否,来判断当前系统是否能支持混音了;

增加此配置文件之前,使用mplayer播放一首歌,命令和输出为:

# mplayer xiangxiang.wma
MPlayer dev-SVN-r23114-3.4.4 (C) 2000-2007 MPlayer Team
CPU: AMD Athlon(tm) 64 Processor 3000+ (Family: 15, Model: 47, Stepping: 2)
CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing xiangxiang.wma.
Cache fill: 3.81% (319488 bytes)
ASF file format detected.
[asfheader] Audio stream found, -aid 1
Clip info:
name: 香香
author: 凤凰传奇
copyright:
comments:
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 2 ch, s16le, 64.0 kbit/4.17% (ratio: 8001->192000)
Selected audio codec: [ffwmav2] afm: ffmpeg (DivX audio v2 (FFmpeg))
==========================================================================
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...

在使用另外一个mplayer播放另外一首歌曲,此时输出为:

mplayer ts.wma
MPlayer dev-SVN-r23114-3.4.4 (C) 2000-2007 MPlayer Team
CPU: AMD Athlon(tm) 64 Processor 3000+ (Family: 15, Model: 47, Stepping: 2)
CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing ts.wma.
Cache fill: 11.72% (983261 bytes)
ASF file format detected.
[asfheader] Audio stream found, -aid 1
Clip info:
name: 替身 tt78.com
author: 杨坤 tt78.com
copyright: 试听更多歌曲到tt78.com
comments: 试听更多歌曲到tt78.com
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 32.0 kbit/2.27% (ratio: 3998->176400)
Selected audio codec: [ffwmav2] afm: ffmpeg (DivX audio v2 (FFmpeg))
==========================================================================

上述mplayer的终端输出清晰的表明了mplayer声音输出被阻塞了,因而没有继续播放,此时你退出第一个mplayer播放程序,就会看到第二个mplayer开始播放歌曲了; 而此时我们可以查看声音设备文件占用情况:

# lsof /dev/snd/*
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mixer_app 5653 root 35u CHR 116,0 5227 /dev/snd/controlC0
mplayer 5954 root mem CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5954 root 5u CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5959 root 4u CHR 116,0 5227 /dev/snd/controlC0

现在我们增加上述的配置文件,再打开两个mplayer同时播放音乐文件,此时两个mplayer都可以正常播放了; 再次查看声音设备文件占用情况:

# lsof /dev/snd/*
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mixer_app 5653 root 35u CHR 116,0 5227 /dev/snd/controlC0
mplayer 5978 root mem CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5978 root 5u CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5978 root 6r CHR 116,33 5130 /dev/snd/timer
mplayer 5981 root mem CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5981 root 5u CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5982 root mem CHR 116,16 5179 /dev/snd/pcmC0D0p
mplayer 5982 root 4r CHR 116,33 5130 /dev/snd/timer
mplayer 5982 root 5u CHR 116,16 5179 /dev/snd/pcmC0D0p

通过上述资源文件的占用情况也可以表明,系统已经实现了混音播放了;

这里有必要说明的一点是--如果你的机器按照上述设置使用mplayer播放还是没有混音的功能,那么你可以试一试在使用mplayer时,使用 -ao alsa参数,也就是使用alsa的音频驱动;
# mplayer xiang.wma -ao alsa
reference:
http://gentoo-wiki.com/HOWTO_ALSA_sound_mixer_aka_dmix#Intro_to_dmix
http://da.gentoo-wiki.com/HARDWARE_Asus_S5N
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值