使用手机控制树莓派播放音频,有几种方式,我这里介绍两种,一种是传统的蓝牙传输方式,一种是airplay方式(苹果专属)
首先讲一下AirPlay方式:
##连接wifi
首先使用ssh登录到树莓派
然后在配合文件中添加需要连接到的wifi名字:
vim /etc/wpa_supplicant/wpa_supplicant.conf
添加一个wifi:
network={
ssid="guess"
psk="bugaosuni"
key_mgmt=WPA-PSK
}
###更新源
vim /etc/apt/sources.list
在里面替换源:
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
###执行更新
udo apt-get update && apt-get upgrade -y
##安装Airplay服务
以下的整个安装都是基于一个开源项目进行的,这是项目主页(https://github.com/juhovh/shairplay)。
###安装依赖环境
sudo apt-get install autoconf automake libtool
sudo apt-get install libltdl-dev libao-dev libavahi-compat-libdnssd-dev
sudo apt-get install avahi-daemon
###从GitHub上获取源码
git clone https://github.com/juhovh/shairplay.git
###编译和安装
cd shairplay
./autogen.sh
./configure
make
sudo make install
###启动
进入软件的当前目录。执行如下命令即可开启服务
shairplay -a your_AirPlay_Name
此时ios设备或者Mac设备连接在同一个Wifi下,便可看到支持AirPlay的设备,名称就是your_AirPlay_Name。点击连接后,苹果设备的音频信号就通过Wifi传输到树莓派的3.5mm音频口。这里可以接入音响的信号输入口。
##完善
为了使树莓派每次上电后可以自动开启AirPlay服务。需要配置自启动,另外消除噪声。
###创建启动脚本文件
cd /etc/init.d/
touch shairplay
nano shairplay
在其中复制一下内容:
#!/bin/bash
#
# This starts and stops shairplay
#
### BEGIN INIT INFO
# Provides: shairplay
# Required-Start: $network
# Required-Stop:
# Short-Description: Free portable AirPlay server implementation similar to ShairPort.
# Description: Free portable AirPlay server implementation similar to ShairPort.
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
# Source function library.
. /lib/lsb/init-functions
DAEMON="/usr/local/bin/shairplay"
DAEMON_ARGS="-a your_AirPlay_Name"
AIRPORT_KEY_DIR="/usr/local/share/shairplay"
[ -x $binary ] || exit 0
RETVAL=0
start() {
echo -n "Starting shairplay: "
start-stop-daemon --start --quiet --chdir $AIRPORT_KEY_DIR \
--exec "$DAEMON" -b --oknodo -- $DAEMON_ARGS
log_end_msg $?
}
stop() {
echo -n "Shutting down shairplay: "
start-stop-daemon --stop --quiet --exec "$DAEMON" \
--retry 1 --oknodo
log_end_msg $?
}
restart() {
stop
sleep 1
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status shairplay
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
;;
esac
exit 0
###加入执行权限
依次执行如下命令。赋予脚本执行权限,并且更新配置信息。
chmod +x /etc/init.d/shairplay
update-rc.d shairplay defaults
执行如下命令,切换到用户shairplay上一级目录
依次执行如下命令,拷贝airport.key
mkdir /usr/local/share/shairplay
cp shairplay/airport.key /usr/local/share/shairplay
输入一下命令,在etc/rc.local中添加内容
vim /etc/rc.local
内容如下(在exit0之前)
# Don't run multiple instances - start just one screen, named "shairplay":
[[ $(screen -list | grep shairplay) == '' ]] &&
screen -dmS shairplay sh
# Keep shairplay perpetually running. When it crashes, we can just SIGKILL it, and it comes back:
[[ $(ps aux | grep -v grep | grep pts | grep '/usr/bin/shairplay') == '' ]] &&
screen -S shairplay -p 0 -X stuff "while true; do /usr/bin/shairplay --apname=Airamaplay --ao_devicename=default; sleep 2s; done
"
之后通过重启树莓派,就直接可以在苹果设备中选择AirPlay服务了。
###消除噪音
如果音响输出有噪声,可以尝试树莓派Audio的pwm模式。
执行如下命令
vim /boot/config.txt
在最后增加如下配置参数
dtparam=audio=on
audio_pwm_mode=2
保存退出;
###切换声卡
如果你用的不是树莓派的板载声卡而是外接的usb声卡,那么你需要配置一下才能实现音乐播放,否则播放的时候是没有声音的或者没有声音从声卡传出来;
树莓派使用的是alsa的音频架构, alsa的配置文件是alsa.conf,它位于/usr/share/alsa目录下,通常还有/usr/share/alsa/card和/usr/shara/alsa/pcm两个子目录用来设置card相关的参数、别名以及一些PCM默认设置。一般不修改里面的内容。
alsa.conf 引用了/etc/asound.conf 和 ~/.asoundrc两个文件,这两个文件可以配置默认声卡和指定音频输入和输出声卡。
通过修改/etc/asound.conf的内容,可以修改默认的声卡信息,也可以指定特定的MIC和Speack。
defaults.pcm.card 1
defaults.pcm.device 0//一定要设置device号码
defaults.ctl.card 1
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:0,0"
}
capture.pcm {
type plug
slave.pcm "hw:1,0"
}