通过两个或多个输出/设备播放声音


79

我认为这是一个非常简单的概念。我有一张声卡和一对蓝牙耳机。我想通过声卡和蓝牙耳机播放音频。

我相信Windows有复选框可以让您“检查”输出以启用/禁用它们,但是Ubuntu似乎具有等效的单选按钮(您一次只能选择一个)。

额外的问题:类似地,我的声卡上还有5个模拟输出通道(除了数字和HDMI音频),我希望能够确定每个端口的输出(例如“前”扬声器”(共5个)或“前”,“中”,“后”等)。

提前致谢!


我已经阅读了所有答案,还查看了答案日期。ubuntu 18.04的当前解决方案是什么?
LeonidMew

是的,paprefsUbuntu 18.04存储库中的版本没有用(因为它仍然认为GConf处于流行状态,因此无法正常工作)。最好的选择是module-combine-sink自己加载PulseAudio的代码(因为paprefs无论如何,这都是幕后操作)。使用命令pactl load-module module-combine-sink并检查Ubuntu设置的“声音”部分。
AneesAhmed777

Answers:


88

有了paprefs你有机会获得一个虚拟的输出设备,使同时输出到所有连接声卡/设备:

sudo apt install paprefs 

然后在终端运行中paprefs,选择“同步输出”选项卡,然后选中“添加虚拟输出以在所有本地声卡上同时输出”。

纸浆

可以从Pulseaudio声音首选项菜单的“输出”选项卡中选择另外创建的用于同时输出的音频输出设备:

在此处输入图片说明

在此示例中,它显示为HDMI设备,但是一旦您的蓝牙设备被识别,它也将可用于同时输出。

更改可能需要重新启动Pulseaudio才能通过注销并重新登录到会话或pulseaudio -k在终端中运行来生效。


1
这样就完成了工作。随着我深入音频开发,我真的很希望能够选择特定的设备和/或端口。
内森·JB

1
@ NathanJ.Brauer:您可能对此答案感兴趣。有关更改端口的信息,请参见我链接到那里的Pulseaudio Wiki。
塔卡特2011年

1
哦,没关系sudo apt install paprefs的作品

2
此版本在18.04中不适用于我。如果您知道如何使用ALSA进行此操作,请在此处帮助我:askubuntu.com/q/1042485/586277
ICE

2
在Ubuntu 16.04中对我不起作用。我在声音偏好窗口中没有看到任何类似“ Simultaneous output”的选项
node_man

21

的Ubuntu

我刚刚确认此解决方案(从4年前开始)仍可在Ubuntu 14.04 LTS上使用。

安装

sudo apt-get install paprefs完全按照上面的图片打开终端并键入转到标签,然后选择选项。

初始运行

然后; 保留在终端中,键入pulseaudio -k以终止并重新启动pulseaudio。

然后转到声音设置,您将看到输出到多个声音设备的选项。

对编写paprefs的人的支持,这是我实际上希望在不需要额外安装的情况下包含在Ubuntu中的精巧小软件。

苹果Mac OS X

可以通过随附的软件获得类似的解决方案,最重要的pulseaudio是,声音似乎在两个输出端都完全同步,因此它还必须针对滞后进行调整,这就是为什么如此令人印象深刻的原因。否则,我们将从一个输出和另一个输出听到一个稍微延迟的版本。


1
感谢您所做的工作来检查解决方案是否仍然有效!
彼得·卡拉索夫,2016年

2
这也适用于Ubuntu 16.04.1 LTS
aggsol

5

为了补充Takkat的出色回答,我发现为新设备提供的默认名称过长,并且扭曲了“声音设置”对话框。为了简化该名称,我不得不另外执行以下命令:

gconftool --set --type string /system/pulseaudio/modules/combine/args0 sink_properties=device.description=Combined

组合设备的声音设置


2
我该如何撤消呢?
伊曼·穆罕默迪

4

尽管我重新启动了系统,但在Debian 8.7中无法立即使用Takkat的建议书。我假设您已完成Takkat的安装建议paprefs。Takkat答案的扩展,该扩展基于Arch Linux Wiki,其中保留模拟输入和“双工”的Pulse调用

# /etc/pulse/default.pa
# http://unix.stackexchange.com/a/180374/16920
load-module module-alsa-sink device=hdmi:0
load-module module-combine-sink sink_name=combined
set-default-sink combined

然后重新启动pulseaudio:

pulseaudio -k

按:对于我来说,这一次当我有工作设备=“0,0 HW” aplay -l(见forums.linuxmint.com/viewtopic.php?t=264540#p1436479
Laurenz

确保放在文件顶部!在将行移到顶部后,这在Ubuntu 18.04.2上对我有效(hw:0,0),可在两个HDMI监视器上播放。
orangenarwhals

2

在Kubuntu 18.04中,paprefs不需要Plasma 5.12 ,因为已经存在类似的设置:

在此处输入图片说明

重新启动后,应该会提供一个新的输出选项,称为“同步输出”。

在此处输入图片说明

或在pavucontrol

在此处输入图片说明


在等离子5.13.5的18.10中,“同步输出”选项已被删除,因此aprefs是必需的。


0

因为LeonidMew询问的是18.04(我正在使用18.04.2),所以这是我的版本。

GUI paprefs尝试将一个HDMI与一个模拟输出而不是两个HDMI结合在一起。所以我必须按照Léo Léopold Hertz 준영

$ gedit /etc/pulse/default.pa
# then after changes 
$ pulseaudio -k

这两种方法都可以单独使用,因此请选择其中一种(确保将其添加到文件的顶部,我放在后面.fail!!否则将无效)。

方法一

load-module module-alsa-sink device=hw:1,3 sink_name=hdmi
load-module module-alsa-sink device=hw:1,7 sink_name=hdmi2
load-module module-combine-sink sink_name=combined slaves=hdmi,hdmi2
set-default-sink hdmi-combined

方法B

load-module module-alsa-sink device=hw:0,0
load-module module-combine-sink sink_name=combined

参考

方法一

供参考,hw:0,0来自aplay -l

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 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

方法B

1:3来自

$ pacmd list-sinks | grep -e 'name:' -e 'alsa.device ' -e 'alsa.subdevice '
    name: <alsa_output.pci-0000_00_1b.0.iec958-stereo>
        alsa.subdevice = "0"
        alsa.device = "1"
    name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1>
        alsa.subdevice = "0"
        alsa.device = "7"

在“声音设置”上,我将另一个HDMI设置为输出,然后得到

$ pacmd list-sinks | grep -e 'name:' -e 'alsa.device ' -e 'alsa.subdevice '
    name: <alsa_output.pci-0000_00_1b.0.iec958-stereo>
        alsa.subdevice = "0"
        alsa.device = "1"
    name: <alsa_output.pci-0000_01_00.1.hdmi-stereo>
        alsa.subdevice = "0"
        alsa.device = "3"

为了验证,我跑了

$ aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Right.wav
$ aplay -D plughw:1,7 /usr/share/sounds/alsa/Front_Right.wav

在各自的监视器上响起。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.