Raspberry Pi 3B+ Buster 上的双音频输出到 Pulseaudio 蓝牙和 HDMI

Dual Audio output to both Pulseaudio Bluetooth and HDMI on Raspberry Pi 3B+ Buster

同时输出到 Pulseaudio 和 HDMI 的音频?

在我的船上 raspberry pi 3 B+ Buster,有两种使用方式:

  1. 它运行 Kodi 播放音乐,通过蓝牙输出到汽车收音机,汽车收音机再输出到扬声器。 (花了两天时间才搞定,终于找到了https://peppe8o.com/fixed-connect-bluetooth-headphones-with-your-raspberry-pi/
  2. 它还可以播放输出到带扬声器的 HDMI 投影仪的电影。

Pi 启动进入 LXDE,运行 bash 脚本通过蓝牙连接(并根据 BluManCZ 在 https://unix.stackexchange.com/questions/334386/how-to-set-up-automatic-connection-of-bluetooth-headset 中的回答继续尝试连接)到无线电,然后自动启动 Kodi。

音乐由 Android Yatse 应用程序控制。

当我想播放电影时,我使用Yatse app停止播放音乐,然后打开投影仪并使用无线键盘播放电影。但我必须手动转到 Kodi 系统设置和 select HDMI 作为声音输出。

当我看完电影后,我正确地关闭了 Pi 的电源。但是,如果我忘记先去手动将声音输出放回 Kodi 中的 Pulseaudio,那么当我下次启动它并希望播放音乐时,我什么也听不到,因为它仍然是 HDMI。所以我必须去打开投影仪,这样我就可以使用键盘将它切换回 pulseaudio。

那么,有什么方法可以让它同时输出到 pulseaudio(蓝牙)和 HDMI,以便无论打开哪个设备(收音机或投影仪)都能发出声音?

或者我可以让它自动检测哪个是活动的并输出到那个吗?

如何才能从通过蓝牙播放音乐无缝切换到通过投影仪播放视频?

请记住,当我打开 Pi 的电源时,收音机和投影仪可能同时打开。

好的,我认为我使用以下步骤解决了它。这假设蓝牙输出到 a2dp 扬声器有效(请参阅我在原始问题中为此采取的步骤):

安装 paprefs:

$ sudo apt install paprefs

然后 运行 使用终端在桌面上:

$ paprefs

这将打开一个带有多个选项卡的 GUI window。 Select 'Simultaneour Out Put' 选项卡提供一个复选框来启用或禁用该功能。开启它。

然后重启pulseaudio

$ killall pulseaudio

现在您可以转到 VLC 和 select 音频选项卡将输出发送到同步输出。声音会传到两者。不幸的是,当您关闭 VLC 时,它会返回到 HDMI,您必须再次手动更改它。同样在 Kodi 中,它不会作为选项出现。

所以,还有几个步骤:

编辑 pulseaudio 的默认配置

$ sudo nano /etc/pulse/default.pa

并在加载任何其他模块之前在开头添加以下行:

load-module module-combine-sink sink_name=combined

这会设置一个新的虚拟设备,输出到所有其他设备。

当你在那里时,确保这条线也在某处(可能更远)

module-default-device-restore

如果系统发生某些变化(例如 HDMI 关闭或打开),这将恢复默认设备。

退出 nano 并按 doign ctrl-x 保存文件,然后对提示说“是”。

列出 pulseaudio 已知的可用设备:

$ pacmd list-sinks | grep -e 'name:' -e 'index:'

现在应该会列出蓝牙、插孔、HDMI 以及组合设备。带有星号的是当前的 fall-back 设备。您想让它成为 'combined' 接收器。为此:

$ sudo set-default-sink combined


$ sudo reboot 0

再次查看,这次合并后旁边应该有星号:

$ pacmd list-sinks | grep -e 'name:' -e 'index:'

现在,当您播放 VLC 或 Kodi 时,声音应该同时传输到 HDMI 和蓝牙。

这似乎在完全关机和开机后仍然存在,所以我认为它达到了目标。我还没有尝试过打开或关闭不同输出设备的所有不同组合,但我希望它能起作用。