如何将 3 个 HDMI 音频分割/合并到前置左、前置中、前置右?

如何将 3 个 HDMI 音频分割/合并到前置左、前置中、前置右?

我有三个显示器连接到我的电脑,并使用 RTX 2060。 aplay -l结果pactl list sinks如下。

如何使用 PulseAudio 配置以下内容:

  • 左显示器为仅左侧通道。
  • 中间的显示器为中央声道。
  • 合适的监视器对应合适的频道。

我目前正在运行 Ubuntu 18.04.05。

Sink #10
State: SUSPENDED
Name: alsa_output.pci-0000_01_00.1.hdmi-stereo
Description: HDA NVidia Digital Stereo (HDMI)
Driver: module-alsa-card.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 7
Mute: no
Volume: front-left: 30148 /  46% / -20.23 dB,   front-right: 30148 /  46% / -20.23 dB
        balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS

  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 1: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 11: HDMI 5 [HDMI 5]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

非常感谢您的帮助。

答案1

好的,经过几天的研究、测试等,我终于找到了答案,回答了自己的问题。这真是太棒了。我的 3 个显示器感觉就像价值百万美元的扬声器。感谢 @nusch 的提示,为我指明了正确的方向。

以下是一般步骤。

  1. 按照以下指南将 PulseAudio 替换为 pipewire.3.xhttps://pipewire-debian.github.io/pipewire-debian/

  2. 将 HDMI 切换到 Pro Audio 配置文件,这样 gpu 上的所有子 HDMI 端口都会显示在 qpwgraph 上

在此处输入图片描述

  1. 通过执行以下命令创建重映射接收器:

    #不要忘记用 alsa_output.pci-alsa_output.pci-0000_01_00.1.hdmi-stereo 替换设备名称

pactl load-module module-remap-sink master_device=alsa_output.pci-alsa_output.pci-0000_01_00.1.hdmi-stereo master_channel_map=front-left,front-right,front-center channel_map=front-right,front-left,front-center remix=false
  1. 通过选择默认音频输出作为 GUI 输出,将 ubuntu gnome 声音控制中的默认音频输出切换为重新映射接收器。

  2. 构建并安装 qpgraphhttps://gitlab.freedesktop.org/rncbc/qpwgraph

git clone [email protected]:rncbc/qpwgraph.git

#>=Ubuntu 21.x
sudo apt install libasound2-dev libpipewire-0.3-dev libalsaplayer-dev libqt6svg6-dev libgl1-mesa-dev libqt6widgets6 libqt6gui6 qt6-base-dev qt6-base-dev g++ cmake libglx-dev pavucontrol

#<=Ubuntu 20.04
sudo apt install libasound2-dev libpipewire-0.3-dev libalsaplayer-dev libqt5svg5-dev libgl1-mesa-dev libqt5widgets5 libqt5gui5 g++-8 cmake libglx-mesa0 mesa-common-dev qt5-default pavucontrol

#before build
export CC=/usr/bin/gcc-8
export CXX=/usr/bin/g++-8
cmake  -B build
cmake --build build
  1. 使用 qpwgraph 将重映射接收器映射到 HDMI 上的每次播放上,如下所示(无需重新启动服务进行通道映射。):

在此处输入图片描述

6.1 您可以使用 gnome 声音控制来测试前、中和右。这使得绘图变得更容易。

在此处输入图片描述

  1. 有用的命令和链接

    cat /proc/asound/pcm
    pactl info
    #restart pipewire service
    systemctl --user restart pipewire-pulse.service
    

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/ https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Virtual-Devices#remap-sink

  1. 您可以根据需要使用管道线将任何音频辅助设备映射到源。这真是太棒了。qpwgraph 的作者建议“彻底抛弃 PulseAudio”。

  2. 尽情享受吧,别忘了点赞并改进我的答案,这样更多的人可以享受这些很棒的 Linux 功能。

奖励积分,

1. 很棒的音乐,可以测试前置、中置、右声道 -https://www.youtube.com/watch?v=3xt8Mp8oWzc

  1. 使用此视频测试您的扬声器https://www.youtube.com/watch?v=ijSYp6N5Yrs&ab_channel=4KClipsAndTrailers

  2. 您可以将虚拟接收器作为音频设备传递给 KVM/Qemu,这样您就可以在 Windows/macOS 上玩游戏并使用重映射接收器作为音频设备。

为了使更改永久生效,如果有人能根据 qpwgraph 导出文件改进我的答案就太好了。

一切顺利。

答案2

这可以通过在 Pulse Audio 中创建适当的虚拟接收器/源来实现,但我发现它很耗时,用 Pipewire 替换 PulseAudio 要容易得多,并且使用它的图形界面可以匹配不同的输入通道和每个应用程序 - 请参阅此处的屏幕截图:https://github.com/rncbc/qpwgraph

相关内容