der*_*ert 42 audio pulseaudio hdmi
我正在通过 HDMI 将音频传输到我的接收器,该接收器连接了完整的 7.1 设置。然而,我听的大多数东西的声道要少得多——有些是单声道,大多数是立体声,还有一点是 5.1。当接收器输入正确数量的通道时,它具有各种 DSP 效果,效果相当好(例如,分离出一个中央通道、将基座发送到低音炮、自动检测杜比矩阵环绕声等)。如果您使用一堆静音频道向它发送完整的 7.1 信号,这将停止工作。
PulseAudio 中的输出通道数量由分配给卡的配置文件配置,每个卡/接收器。您可以更改与分配的配置文件pacmd,pactl以及各种GUI程序。
如何将其设置为根据输入流中的通道使用情况自动更改配置文件?例如,如果输入流仅使用左前和右前,则切换到立体声配置文件。如果他们同时使用左后和右后,请切换到四声道等。
这只是一个概念,没有完整的解决方案:
如果您可以将配置分配给 pulsaudio 客户端,您也许可以自己处理事件patcl subscribe(例如,如果电影播放器连接,则切换到 7.1 配置,否则使用立体声配置)。您将从中获得持续的事件流patcl subscribe,您可以通过观察客户端连接来处理这些事件流。然后你可以调用 pactl/pacmd 来更改配置文件。
pactl subscribe 的输出示例:
$ pactl subscribe
Event 'change' on sink #0
Event 'remove' on sink-input #93
Event 'change' on sink #0
Event 'change' on source #0
Event 'change' on sink #0
Event 'change' on source #0
Event 'new' on sink-input #98
Event 'change' on sink-input #98
Run Code Online (Sandbox Code Playgroud)
请注意,您仍然无法处理多个客户端具有不同数量的通道的情况。
此外,上述方法相当有限。每个应用程序的设置不足以检测应用程序使用的实际通道数(例如,vlc 可能播放 5.1 或 7.1 视频)。我还没有找到一种方法来通过 pactl 获取pulseaudio 客户端实际使用的通道数,但我可能在这里错过了一些选项。或者,您也可以连接到视频播放器应用程序本身并在那里获取丢失的位。
| 归档时间: |
|
| 查看次数: |
2865 次 |
| 最近记录: |