使用 pactl 而不是 pavucontrol 更改声卡配置文件

使用 pactl 而不是 pavucontrol 更改声卡配置文件

我有一台媒体中心(Asrock Nvidia ION330)服务器,装有 Ubuntu 16.04。它运行 Kodi,并通过 HDMI 电缆连接到我的电视。这台电脑有更多的音频输出,比如立体声插孔和 iec958 连接器,我已将它们连接到 Hi-Fi 放大器。

我想为我的媒体中心添加一个新功能,a2dp 蓝牙接收器。其实很简单,只需将设备与 bluetoothctl 配对即可,但我不想通过 HDMI 播放音乐,因为我不想在电视上听到音乐。

使用 pavucontrol 可以非常轻松地更改声卡的配置文件并通过立体声插孔或 iec958 输出音乐,但我想在无头模式下执行此操作。我不想每次想听音乐时都拿起键盘、启动 pavucontrol 并更改配置文件。

我有一个守护进程脚本,它可以检测我的手机何时配对并尝试使用 pactl 更改声卡的配置文件,但是由于某些未知原因,我的声卡忽略了该命令。

我尝试的命令是:“pactl set-card-profile 0 output:iec958-stereo”我使用运行 kodi 的同一用户运行,并且该命令不会引发任何错误。此外,如果我在运行命令后查看声卡活动配置文件,我可以看到配置文件已更改,但音乐仍通过 hdmi 播放。

我不知道为什么 pavucontrol 一直有效,而 pactl 却不行

编辑:我找到了一种解决方法,但并没有解决原始问题。我在同一台服务器上运行音乐播放器守护程序,它有自己的 pulseaudio 实例,具有不同的声卡配置文件。MPD 通过 SPDIF 播放,而 Kodi 通过 HDMI 播放。我所做的就是将 mpd 用户添加到 lp 组,以便 mpd 用户可以看到蓝牙资源。现在,当我配对手机时,mpd 的 pulseaudio 会话可以看到蓝牙源,它也通过 SPDIF 播放。罕见的是,kodi 的 pulseaudio 会话不再看到蓝牙源,但这不会打扰我。

相关内容