我已经搜索这个问题好几天了,并尝试了各种建议的解决方案,但没有成功。
基本上,我有一台带有内置音频(输出到耳机插孔或内置扬声器)和 HDMI 的笔记本电脑。我正在使用 KDE 运行 Debian 7.5。
以前,我仅运行 ALSA,并且能够将 Skype 配置为在 HDMI 上响铃,但使用耳机进行通话。我想使用 Pulse 实现类似的目标。
我不确定 Skype 在将铃声和呼叫音频发送到 PulseAudio 时是否仍然将它们分开,但由于 Skype 的 Linux 版本可以在事件上运行任意脚本,如果我可以使用egaplay
在 HDMI 端口上播放某些内容,我会很高兴。然而,无论我做什么,我总是只看到(并且只能使用)一个输出设备。
aplay -l
:
**** 播放硬件设备列表 **** 卡 0:PCH [HDA Intel PCH],设备 0:ALC269VB 模拟 [ALC269VB 模拟] 子设备:1/1 子设备#0:子设备#0 卡 0:PCH [HDA Intel PCH],设备 3:HDMI 0 [HDMI 0] 子设备:1/1 子设备#0:子设备#0
aplay -L
:
默认 通过 PulseAudio 声音服务器播放/录音 系统默认:CARD=PCH HDA 英特尔 PCH、ALC269VB 模拟 默认音频设备 前面:CARD=PCH,DEV=0 HDA 英特尔 PCH、ALC269VB 模拟 前置扬声器 环绕40:卡= PCH,DEV = 0 HDA 英特尔 PCH、ALC269VB 模拟 4.0 环绕声输出至前置和后置扬声器 环绕41:卡= PCH,DEV = 0 HDA 英特尔 PCH、ALC269VB 模拟 4.1 环绕声输出至前置、后置和低音炮扬声器 环绕50:卡= PCH,DEV = 0 HDA 英特尔 PCH、ALC269VB 模拟 5.0 环绕声输出至前置、中置和后置扬声器 环绕51:卡= PCH,DEV = 0 HDA 英特尔 PCH、ALC269VB 模拟 5.1 环绕声输出至前置、中置、后置和低音炮扬声器 环绕71:卡= PCH,DEV = 0 HDA 英特尔 PCH、ALC269VB 模拟 7.1 环绕声输出至前置、中置、侧置、后置和低音扬声器 hdmi:卡=PCH,DEV=0 HDA 英特尔 PCH、HDMI 0 HDMI 音频输出
当我尝试直接使用 hdmi 设备时,出现以下错误:
$ aplay -D hdmi 警报.wav 播放 WAVE 'alert.wav':带符号 16 位 Little Endian,速率 22050 Hz,单声道 aplay: set_params:1087: 通道数不可用
在 中pavucontrol
,在“配置”选项卡下,我看到一个Profile
包含以下选项的下拉菜单:
模拟立体声双工 模拟立体声输出 模拟立体声 (HDMI) 输出 + 模拟立体声输入 模拟立体声 (HDMI) 输出 模拟立体声输入 离开
据我所知,所有这些都按(可能)预期工作:那些说 HDMI 会将音频输出定向到 HDMI 端口;其他的到内置声卡。无论我选择哪一个,我总是只能在“输出设备”选项卡下看到一个输出设备。
我尝试添加内置设备或 HDMI 设备来/etc/pulse/default.pa
使用load-module module-alsa-sink device=hw:0,0
-load-module module-alsa-sink device=hw:0,3
这些似乎没有效果,或者使pulseaudio根本不显示任何配置文件。
答案1
我刚刚成功配置了这一点,这要归功于ArchLinux wiki 中的说明:
设置一个接收器 - HDMI - 在 pavucontrol/Configuration 中,另一个 - 模拟输出 - 您在以下指定default.pa
:
load-module module-alsa-sink device=hw:0,0
load-module module-combine-sink sink_name=combined
set-default-sink combined
也许您错过了最后两行?
附录:将模拟输出添加到 HDMI 是可以的,但如果您想要相反怎么办? (我想保留模拟输入,Pulse 称之为“双工”...)不幸的是,load-module module-alsa-sink device=hw:0,3
没有不是致力于将 HDMI 输出添加到 Pulse 的“模拟立体声双工”配置中。脉冲将启动,但没有 HDMI 输出。
pacmd list-sinks
我比较了两种情况下的输出。当我添加 时device=hw:0,3
,该选项将显示为没有端口。当pavucontrol中选择HDMI输出时,就会有端口。查看输出详细信息,我想出了设备=hdmi:0。
选择“Analog Stereo Duplex”作为您的 pavucontrol 配置,并添加到default.pa
:
load-module module-alsa-sink device=hdmi:0
load-module module-combine-sink sink_name=combined
set-default-sink combined
奇迹般有效。我保留麦克风输入,在 pavucontrol/输出设备上我有模拟输出的所有选项和用于 HDMI。
答案2
PipeWire 于 2023 年达到 1.0 版本,发行版正在逐渐用 PipeWire 取代 PulseAudio。我写了一篇关于拥有PipeWire 中同时存在多个端口。一个简短的总结是:
编辑9999-自定义.conf文件,位于alsa 卡配置文件目录结构。
取消注释该文件中的示例,并根据您的需要进行调整:
[Profile output:analog-stereo+output:hdmi-stereo+input:analog-stereo] description = Multiple ports (custom profile) output-mappings = analog-stereo hdmi-stereo input-mappings = analog-stereo
重新启动 PipeWire。
根据您的发行版和配置文件位置,每当您的发行版更新已安装的软件包时,您的更改可能会被覆盖。
通过这些更改,HDMI 输出和模拟输出将同时可用。这样,就可以很容易地使用像这样的工具qpw图将应用程序即时路由到每个输出。也可以创建一个虚拟设备这将成为新的默认输出设备,并将音频转发到多个物理设备。
PipeWire 极其灵活,有多种可能性和多种解决方案。旧的基于 PulseAudio 的解决方案应该仍然可以继续工作,但它们也可以迁移到较新的 Pipewire 模块。