首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“未能打开音频输出”错误时,试图将音频从mpd发送到脉冲音频

“未能打开音频输出”错误时,试图将音频从mpd发送到脉冲音频
EN

Ask Ubuntu用户
提问于 2014-11-03 02:29:27
回答 3查看 12.3K关注 0票数 7

当我尝试通过脉冲音频播放mpd时,mpd.log报告:

pulse_output:未能启用"Pink ROCKI“脉搏:pa_context_connect()已失败:连接被拒绝

  • 脉冲似乎工作良好,因为pacmd列表接收器显示了我所有的脉冲接收器,meb浏览器音频通过默认接收器播放很好,而VLC可以通过它们中的任何一个播放声音。
  • 如果我通过alsa而不是脉冲发送输出,mpd就能正常工作。
  • mpd和脉冲音频都在我的帐户下运行(弗雷德)。
  • fred和脉冲音频都是脉冲、脉冲访问和音频组的成员.
  • 我甚至在不同的脉冲音频版本中尝试过这样的方法:Ubuntu14.04附带的4.0、使用PAPR4.0构建的实验RAOP2 2和用PPRE5.0构建的实验性RAOP2。mpd不会与他们中的任何一个一起工作。

我的mpd.conf文件是vanilla;脉冲部分是泛型的:

代码语言:javascript
复制
    audio_output { 
    type "pulse" 
    name "General Pulse" 
    }

尽管如下文所示,我也尝试指定一个单独的接收器,这两个名称都是:

代码语言:javascript
复制
audio_output {
    type        "pulse"
    name        "ROCKI"
    sink        "raop_output.ASAP1826T.local"
}

并按指数#:

代码语言:javascript
复制
audio_output {
    type        "pulse"
    name        "ROCKI"
    sink        "4"
}

接下来我该试试什么呢?配置脉冲音频作为系统服务运行会有帮助吗?

这是在Ubuntu 14.04,Pulse音频4.0 (和5.0),音乐播放器Daemon 0.18.7上

更新:我发现这个博客博客作者Louiz似乎已经解决了同样的(或非常类似的)问题:

MPD显然试图产生一个新的脉冲音频进程,作为我自己的用户,但它失败了,因为它已经在运行。我不明白为什么它不能只使用现有的脉冲音频实例,而不尝试生成一个新的实例。多亏了这个职位,我才明白。由于没有设置环境变量XDG_RUNTIME_DIR,以及脉冲音频文件存储的位置(套接字、进程pid等),所以MPD无法找到已经运行的脉冲音频实例。

我试过他的解决方案:

创建一个新文件/etc/systemd/mpd.service.d/ file env.conf,其中包含:服务环境=XDG_运行时_DIR=/run/user/ 1000 (用用户的UNIX替换1000)。

我重新启动并正确设置了XDG_RUNTIME_DIR,脉冲将其pid文件放入/run/ user /1000/脉冲/目录(我的用户id为1000),但我仍然从mpd获得相同的错误:

pulse_output:未能启用"ROCKI“脉搏:pa_context_connect()已失败:连接被拒绝

我每天都在学习更多关于linux的知识,但是套接字、进程pids、systemd ( Ubuntu不应该使用upstart吗?)系统似乎正在运行和启动的东西),等等,都在我的工资等级以上--我迷失在树林里。

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2014-11-13 10:32:35

最后,与脉冲音频守护进程模式相比,最好的解决方案是那里:它是关于以自己(而不是mpd用户)的身份运行mpd,所以使用自己的会话脉冲音频没有问题。

一个不同的答案,但经过测试,而且也很有效:

将脉冲音频配置为“守护进程模式”,而不是标准的“用户模式”。

  • 在终端中,run sudo gedit /etc/init/pulseaudio.conf然后取消注释第20行,删除要获取的#start on runlevel [2345]保存并退出gedit。
  • 在终端中运行以下两个命令: sudo usermod -aG pulse,pulse-access mpd sudo usermod -aG pulse,pulse-access your-login,在第二个命令中,替换“your login”。

现在重新启动:希望它能工作。

注意:这个页面列出了为什么你必须避免脉冲音频守护进程模式的原因,但是我发现它在单个用户pc上是正常的(特别是我没有看到比用户模式更多的cpu/内存使用)。

票数 3
EN

Ask Ubuntu用户

发布于 2015-06-23 09:43:42

XDG_RUNTIME_DIR解决方案对我有效,但不需要在/etc/systemd/system中创建文件。只需在/etc/init.d/mpd中添加这一行:

代码语言:javascript
复制
export XDG_RUNTIME_DIR=/run/user/1000

我已经指定mpd作为我自己的用户和/etc/mpd.conf中的“音频”组运行。

票数 3
EN

Ask Ubuntu用户

发布于 2014-11-03 12:57:17

您可以尝试在MPD配置文件中指定脉冲音频接收器:

若要显示脉冲音频接收器,请在终端中运行以下命令:

pactl list short sinks

它将输出类似于:

代码语言:javascript
复制
0   alsa_output.pci-0000_00_03.0.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   IDLE
1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   RUNNING

选择您的主接收器(在我的情况下是第二个接收器,因为我没有HDMI声音),并在mpd.conf audio_output中复制它的名称:

audio_output {

代码语言:javascript
复制
    type                    "pulse"
    name                    "MPD PulseAudio Output"
   sink                    "alsa_output.pci-0000_00_1b.0.analog-stereo"

}

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

https://askubuntu.com/questions/544925

复制
相关文章

相似问题

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