我对脉冲音频有点麻烦,因为这是传统。
当我进入X (DWM),运行谷歌铬和旅行到youtube.com和播放一个视频,耳机不能工作,声音是不稳定的。
speaker-test -c 2 -t wav -D plughw:2,0的结果是:播放打开的错误:-16,设备或资源繁忙
当我重新启动X (Logout -> Login)时,浏览器中的音频开始神奇地工作。
*播放硬件设备*
card 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC898 Digital [ALC898 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Device [USB Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0我不知道发生了什么,下面是我从/var/log/消息收到的消息
首次登录
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:44 qwerty org.a11y.Bus[1007]: Activating service name='org.a11y.atspi.Registry'
Mar 11 20:07:44 qwerty org.a11y.Bus[1007]: Successfully activated service 'org.a11y.atspi.Registry'
Mar 11 20:07:44 qwerty org.a11y.atspi.Registry[1288]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.第二次登录
Mar 11 20:08:01 qwerty org.gtk.vfs.Daemon[1007]: A connection to the bus can't be made
Mar 11 20:08:01 qwerty org.gtk.vfs.Daemon[1007]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlyin on an async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:01 qwerty org.a11y.Bus[1007]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOS async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:01 qwerty org.a11y.atspi.Registry[1288]: g_dbus_connection_real_closed: Remote peer vanished with error: Undebytes on an async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:02 qwerty org.a11y.Bus[1007]: No protocol specified
Mar 11 20:08:17 qwerty org.a11y.Bus[1349]: Activating service name='org.a11y.atspi.Registry'
Mar 11 20:08:17 qwerty org.a11y.Bus[1349]: Successfully activated service 'org.a11y.atspi.Registry'
Mar 11 20:08:17 qwerty org.a11y.atspi.Registry[1539]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.Asound.conf
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}ALSA信息脚本v0.4.64的输出
http://www.alsa-project.org/db/?f=5290b8d86207b2cba3c1e4854fea0399e7fdb9f7
如果我继续关闭所有正在运行的脉冲音频进程,然后运行
speaker-test -c 2 -t wav -D plughw:2,0音频工作,但不明显在浏览器中。
现在我有两个选项,删除脉冲音频并尝试通过环境变量设置PCM_DEVICE,这也是a**中的一个痛苦,或者尝试对这个脉冲音频S*进行排序。我宁愿呆在别的地方。
发布于 2016-03-11 21:06:52
我不想用脉冲音频解决这个问题,因为这个问题突然浮出水面,我不知道我安装了什么软件包,但是我没有改变配置文件中的任何东西,这个问题突然出现了。
我为解决这个问题所做的就是完全去除脉冲音频。
apt-get --purge remove pulseaudio*
rm -r ~/.config/pulse更改回我以前的alsa asound.conf文件,并为设备环境变量添加了输入。
/ETC/ASOUND.CONF
defaults.pcm.!card Device
defaults.ctl.!card Device
defaults.pcm.!device {
@func igetenv
vars [ ALSA_PCM_DEVICE ]
default 0
}它起作用了!(“设备”是我的USB卡的名字)
当切换到带有多个音频输出设备的卡时,我必须设置环境变量。
命令:> ALSA_PCM_CARD=CARD ALSA_PCM_DEVICE=DEVICE firefox
我无法在不将ALSA_PCM_DEVICE添加到asound.conf的情况下设置它,尽管它是在/usr/share/alsa/alsa.conf中定义的,但它显然不足以设置它。
原因是plughw使用ALSA_PCM_DEVICE,如果没有设置,则返回到defaults.pcm.device,而dmix (/usr/share/alsa/pcm/dmix.conf)只使用defaults.pcm.device,而不检查ALSA_PCM_DEVICE
这就是为什么您必须显式地重新定义defaults.pcm.!设备,让它检查ALSA_PCM_DEVICE环境变量。
编辑(关于IRC - ALSA环境变量的摘要会话)
除非你有一些不寻常的嵌入式设备/驱动程序。
Alsa应该提供类似的“默认”=插件->dmix->hw回放链。
它应该在没有~/..asoundrc的情况下开箱工作。
默认情况下,卡0设备0上的链子结束。
或者,在技术上,它是:(1)默认为card ALSA_PCM_CARD环境,如果它不是set (2)默认为ALSA_CARD env.variable,如果它不是set (3)默认为"defaults.pcm.card“alsa变量,如果没有设置(4)默认为card 0。
例如,要让所有应用程序播放名为"PCH“的声卡,只需在~/..asoundrc(仅限用户)或/etc/asound.conf (所有用户)中只需2行:
要覆盖这一点,并播放一张名为“耳机”的卡,您可以运行应用程序:env ALSA_CARD=Headset some-app-here。您可以在cat /proc/asound/cards或aplay -l输出中看到卡名。从技术上讲,您也可以使用卡号(env ALSA_CARD=2 some-app-here),但是在重新启动时数字可能会发生变化,所以通常使用名称更好。
编辑(关于IRC -PulseAudio的摘要会话)
脉冲音频做的不一样。它没有添加中间模块,而是添加了一个全局脉冲音频守护进程,该守护进程直接播放到"hw“pcm。所有其他应用程序都应该播放这个守护进程,因为当它运行时,没有人可以播放"hw“。这就是为什么我有“设备或资源很忙”的原因。
因此,典型的脉冲音频回放链是default=“类型脉冲”模块->脉冲音频守护进程-> hw。你不应该在脉冲音频中使用"hw“、"plughw”或"dmix“--它们不能一起工作。相反,我应该定义pcm.!缺省{ type脉冲}(实际上脉冲音频通常会自动为您完成)
安装了脉冲音频后,您只需要pcm.!默认{ type脉冲}。在大多数发行版中,脉冲音频都是自动完成的。(在archlinux上,它被打包成一个单独的“pulse音频- alsa”包,它基本上只有这个alsa配置而没有其他)
https://unix.stackexchange.com/questions/269235
复制相似问题