019 通过蓝牙音箱播放音乐 - llj2kh/studynote GitHub Wiki
通过蓝牙音箱播放音乐
参考资料:
Home Assistant 搭建日志(五)——让蓝牙音箱唱歌
树莓派连接蓝牙音箱播放音乐
树莓派连接蓝牙音箱或者耳机
ALSA音频工具amixer,aplay,arecord
1. rfkill 命令
该命令可以控制机上的无线设备,打开或关闭设备。
蓝牙设备上电提示Failed to set power on: org.bluez.Error.Blocked
原因及解决办法:
这是由于蓝牙设备没有上电造成的,可通过如下命令解决此问题:
-
rfkill unblock bluetooth
hciconfig hci0 up -
rfkill
显示机上无线设备状态 -
rfkill block 0
停用系统中第一个启用RFKill的设备。
您还可以使用 rfkill 阻断某一类设备,或者所有启用了RFKill的设备。例如:
-
rfkill block wifi
停用系统中的所有Wi-Fi设备。要停用所有启用了RFKill的设备,请运行: -
rfkill block all
要重新使用设备,请运行 rfkill unblock。要获得 rfkill 可停用的完整设备类别列表
2. bluetoothctl 控制蓝牙设备连接
使用bluetoothctl连接蓝牙耳机
- 进入bluetoothctl命令行
bluetoothctl
进入bluetoothctl命令行后,类似:[bluetooth]#
Controller代表arm板上的蓝牙设备,Device代表蓝牙耳机
按如下步骤初始化蓝牙设备,并连接蓝牙耳机 - 查看帮组
help - 查看蓝牙设备
list
power on
agent on
default-agent
-
启动扫描
scan on -
关闭扫描
scan off -
显示可配对的设备
devices -
配对
pair E3:28:E9:24:21:07 -
信任该地址,以后可自动连接。假如蓝牙耳机地址为:E3:28:E9:24:21:07
trust E3:28:E9:24:21:07 -
连接
connect E3:28:E9:24:21:07 -
查看蓝牙耳机信息
info E3:28:E9:24:21:07 -
断开连接
disconnect E3:28:E9:24:21:07 -
不想自动连接上蓝牙耳机,可以删除配对信息
remove E3:28:E9:24:21:07 -
连接完毕使用命令退出蓝牙控制器
quit -
测试蓝牙音箱能否播放音乐
aplay -D bluealsa:DEV=蓝牙设备mac地址,自己修改,PROFILE=A2DP test.wav
test.wav是要播放的音频,自己找个音频代替,但是aplay是不支持mp3的,能播放音乐的话就下一步。
此时两个设备应该连接好
3. 使用bluealsa进行播放
经过网上n多的搜索,发现除了pulseauio的另一个蓝牙控制软件-bluealsa,经测试播放很流畅,建议大家使用。
首先安装bluealsa
sudo apt install bluealsa
3.1 添加pi用户到蓝牙用户组
sudo usermod -aG bluetooth pi
3.2 修改bluealsa配置,设置bluealsa为默认播放插件
sudo vi /etc/asound.conf
内容如下: 其中 device 我改成来蓝牙音箱的地址
pcm.!default {
type plug
slave.pcm {
type bluealsa
interface "hci0"
device "12:34:56:78:9a:bc"
profile "a2dp"
}
hint {
show on
description "BT Speaker"
}
}
搞不懂该配置,也不知道有用没,暂时写在这
4. 蓝牙音响破音杂音等问题的解决办法
个人认为是加用户组起到了作用,但不确定,之前禁用wifi也没效果
树莓派系统里默认安装的pulseauido播放毛病比较多。使用bluealsa即可流畅的进行播放。
-
卸载pulseaudio
sudo apt remove pulseaudio* -
安装bluealsa
sudo apt-get install bluealsa -
添加pi用户到蓝牙用户组
sudo usermod -aG bluetooth pi
重启后再通过蓝牙连接,蓝牙音响终于正常了!
5. 播放音乐
因为许多深层东西不懂,只好照猫画虎,编写脚本来播放。
#!/bin/bash
cd /samba/DLNA/Music/wav
for mu in *.wav;do
aplay -D bluealsa:DEV=88:00:00:00:03:E5,PROFILE=A2DP $mu
done
另 ===================
-
重启bluealsa服务
sudo service bluealsa restart -
重启蓝牙服务
sudo service bluetooth restart
6. 音量调节
根据相关资料,准备用 amixer 命令进行音量调节,但在实际应用中设置不起作用。
- amixer scontrols
查看当前有哪些选择可以控制 - amixer scontents
可以查看当前所有可以控制的变量的值,
查看之后,确定控制音量的变量,即可用下面命令进行调节。
- amixer cget controls中所输出的某个参数
- amixer cset controls中所输出的某个参数 具体的值(比如,0,1,On,Off等)