Linux声音方案

方案概览

ALSA(高级Linux声音体系)是为声卡提供驱动的Linux内核组件,以替代原先的OSS(开放声音系统).这两个是系统发出声音最低层的软件系统,可以视为(或者就是)驱动.

PulseAudio和ESD是两个声音服务器,简单说,软件要发声就先发消息给声音服务器,然后声音服务器经过处理(主要是多条音频流的混音),然后发给驱动控制声音设备发出声音.
PulseAudio(以前叫Polypaudio)是一个跨平台的,可通过网络工作的声音服务,其一般使用于Linux和FreeBSD操作系统。它可以用来作为一种简易改进的开放声音后台(ESD)替换。PulseAudio是自由软件,基于GNU Lesser General Public License2.1.协议。
PulseAudio是用于POSIX和WIN32系统的声音服务器,声音服务器基本上就是您的声音应用的代理者。当您的音频数据通过您的程序和硬件时,它允许您对音频数据进行高级操作。比如说,把音频传送到别的机器上,改变原始音频的格式或者通道数,以及把几种音频混合在一起。通过声音服务器,这些都可以很容易得到实现。简单来说,PulseAudio负责您系统上的混音和音频回放。它不是声音驱动,事实上,它在ALSA的上层运行。除了PulseAudio提供的那些很cool的音效,它也可以代替ALSA的虚拟混音设备(Dmix插件,也叫dmix)。因此,PulseAudio允许多个程序共同使用您的声卡。

选用pulseaudio+alsa的好处和坏处,好处就是解决混音和声卡独占问题,缺点就是有些软件(极其个别)还不支持

常用软件和命令

pulseaudio ---声音服务器
pac[md|tl|at] ---声音服务器管理
hci[tool|config|attach] ---设备管理(蓝牙)
bluetoothctl ---蓝牙控制台

网易云配合蓝牙音响

方案概览

网易云》pulseaudio》bluetooth》蓝牙音响

具体步骤

  1. 蓝牙音响连接
#启动声音服务器
pulseaudio -k
pulseaudio --start
#蓝牙连接
sudo bluetoothctl
[bluetoothctl] power on
[bluetoothctl] scan on
[bluetoothctl] pair [B8:D5:0B:8D:10:C2]
[bluetoothctl] trust [B8:D5:0B:8D:10:C2]
[bluetoothctl] connect [B8:D5:0B:8D:10:C2]
[bluetoothctl] scan off
  1. 声音服务器管理
#列出card
pacmd list-cards
#列出sink
pacmd list-sinks
#过滤列出的内容
pacmd list-sinks | grep -e 'name:' -e 'index'
#设置默认sink
pacmd set-default-sink bluez_sink.B8_D5_0B_8D_10_C2.headset_head_unit
#设置card profile 为 sink(只能作为输出)
pacmd set-card-profile bluez_card.B8_D5_0B_8D_10_C2 a2dp_sink

修改 /etc/bluetooth/audio.conf 配置如下

[Generall]
Enable=Source,Sink,Media,Socket

参考资料:

标签: Raspberry Pi

添加新评论