树莓派-Bluetooth

528 阅读2分钟

树莓派连接蓝牙音响,并播放.mp3音频,wav音频

  1. 测试播放器: mplayer, mpg321,vlc aplay, paplay
  2. 音频渲染服务: pulse, alsa
  3. 蓝牙服务: bluetooth
  • 安装播放器
sudo apt-get install mplayer
sudo apt-get install mpg321
  • 安装音频渲染服务
sudo apt-get install alsa-base alsa-utils
sudo apt-get install pulseaudio pulseaudio-module-bluetooth
  • 安装vlc
sudo apt-get install vlc

# 使用libvlc-go
#首先安装libvlc

sudo apt-get install libvlc-dev
sudo apt-get install vlc-plugin-base
sudo apt-get install vlc-plugin-video-output
  • 安装蓝牙服务
sudo apt-get install bluetooth pi-bluetooth bluez bluez-firmware bluez-tools blueman libbluetooth-dev libglib2.0-dev libboost-thread-dev

sudo usermod -G bluetooth -a pi

sudo reboot
  • 命令行操作蓝牙,这不用详细说明,因为百度随便一搜都是这个方法
bluetoothctl   #进入蓝牙
power on
scan on
pair xx:xx:xx:xx:xx
trust xx:xx:xx:xx:xx
connect xx:xx:xx:xx:xx
exit

#注意,这里bluetoothctl会进入到另一个进程如果要在当前进程执行命令可以使用
echo "connect 18:BC:5A:BD:BD:01" | bluetoothctl
  • 播放音乐
1. mplayer xx.mp3
2. mpg321 xx.mp3
3. aplay xx.wav
4. paplay xx.wav

奇怪的是,使用上面的方法,我们并没有听到声音, 因为音频渲染服务的问题

着手解决问题 检查是否安装运行了alsa或PulseAudio

pactl list
aplay -l

1. pactl list cards            # 查看声卡列表 
2. pactl list sources 
3. pacmd help                  # 命令帮助 
4. pacmd list-sinks            #查看sink 列表 
5. pacmd list-cards 
6. pacmd set-default-sink 2    #设置输出设备


  • 检查PulseAudio是否运行
pacmd help
如果提示:没有 PulseAudio 守护进程在运行,或者没有作为会话守护进程运行
则说明服务没有启动
  • 运行PulseAudio 服务
#修改pulseaudio的空闲退出时间
sudo nano /etc/pulse/daemon.conf
exit-idle-time = -1

在root用户下输入
sudo sh -c echo “pulseaudio –start –log-target=syslog” >> /etc/environment

#添加开机自启
sudo nano /etc/rc.local
pulseaudio --start --log-target=syslog
  • 可能到这里,开机后PulseAudio服务仍然是不可用的,所以我试了一下上一步设置的开机自己可以直接去掉了
#因为Pulseaudio是一个用户级别的服务所以我们在查看服务的时候应该这样子:
systemctl --user status pulseaudio.service
systemctl --user restart pulseaudio.service
systemctl --user start pulseaudio.service

# 设置当前用户 login 时启动 pulseaudio
systemctl --user enable pulseaudio
# 任意用户 login 时启动 pulseaudio
sudo systemctl --global enable pulseaudio

#修改 /usr/lib/systemd/user/pulseaudio.service

Restart=always
  • 设置 amixer
sudo nano /etc/asound.conf

#添加下面的内容
defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0
  • 可能用到的命令
#重装pulseaudio
sudo apt-get --purge --reinstall install pulseaudio

#查询蓝牙信息
hciconfig

#音量调机
sudo alsamixer

#检查开机自启是否成功
systemctl status rc-local

#重启rclocal
systemctl restart rc-local

#查看开机信息
dmesg
  • 参考
  1. How can I restart pulseaudio without having to logout?