首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PulseAudio耳机问题

PulseAudio耳机问题
EN

Unix & Linux用户
提问于 2016-03-11 19:18:18
回答 1查看 882关注 0票数 3

我对脉冲音频有点麻烦,因为这是传统。

当我进入X (DWM),运行谷歌铬和旅行到youtube.com和播放一个视频,耳机不能工作,声音是不稳定的。

speaker-test -c 2 -t wav -D plughw:2,0的结果是:播放打开的错误:-16,设备或资源繁忙

当我重新启动X (Logout -> Login)时,浏览器中的音频开始神奇地工作。

*播放硬件设备*

代码语言:javascript
复制
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/消息收到的消息

首次登录

代码语言:javascript
复制
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.

第二次登录

代码语言:javascript
复制
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

代码语言:javascript
复制
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*进行排序。我宁愿呆在别的地方。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-03-11 21:06:52

我不想用脉冲音频解决这个问题,因为这个问题突然浮出水面,我不知道我安装了什么软件包,但是我没有改变配置文件中的任何东西,这个问题突然出现了。

我为解决这个问题所做的就是完全去除脉冲音频。

代码语言:javascript
复制
apt-get --purge remove pulseaudio*
rm -r ~/.config/pulse

更改回我以前的alsa asound.conf文件,并为设备环境变量添加了输入。

/ETC/ASOUND.CONF

代码语言:javascript
复制
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行:

defaults.pcm.!card PCH

defaults.ctl.!card PCH

要覆盖这一点,并播放一张名为“耳机”的卡,您可以运行应用程序:env ALSA_CARD=Headset some-app-here。您可以在cat /proc/asound/cardsaplay -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配置而没有其他)

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/269235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档