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

Ade*_*ary 10 sound multiple-monitors pulseaudio hdmi alsa

我将三台显示器与 RTX 2060 连接到我的电脑 aplay -lpactl 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
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助。

Ade*_*ary 6

好吧,经过几天的研究、测试等之后,我终于回答了我自己的问题,我终于成功了。太奇妙了。我的 3 台显示器感觉就像价值数百万美元的扬声器。感谢@nusch 的提示,为我指明了正确的方向。

以下是一般步骤。

  1. 按照https://pipewire-debian.github.io/pipewire-debian/上的指南将 PulseAudio 替换为 pipeline.3.x

  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
Run Code Online (Sandbox Code Playgroud)
  1. 通过选择它作为 GUI 的输出,将默认音频输出从 ubuntu gnome 声音控制切换到 remapped-sink。

  2. 在https://gitlab.freedesktop.org/rncbc/qpwgraph上构建并安装 qpgraph 。

git clone git@gitlab.freedesktop.org: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
Run Code Online (Sandbox Code Playgroud)
  1. 使用 qpwgraph 将重映射接收器映射到 HDMI 上每次播放时的播放,如下所示(无需重新启动通道映射服务。):

在此输入图像描述

6.1 可以使用gnome声音控制来测试前、中、右。这使得映射变得更加容易。

在此输入图像描述

  1. 有用的命令和链接

    cat /proc/asound/pcm
    pactl info
    #restart pipewire service
    systemctl --user restart pipewire-pulse.service
    
    Run Code Online (Sandbox Code Playgroud)

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 导出文件改进我的答案。

一切顺利。