基于树莓派(raspberry pi 3B+)的AirPlay功能实现

/ 0评 / 0

安装Airplay服务

以下的整个安装都是基于一个开源项目进行的,这是项目主页(https://github.com/juhovh/shairplay)

其中给出了详细的安装方法。

安装依赖环境

通过SSH登录树莓派,分别执行如下命令

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

启动

进入软件的当前目录 /home/pi/shairplay 。执行如下命令即可开启服务

shairplay -a your_AirPlay_Name

此时ios设备或者Mac设备连接在同一个Wifi下,便可看到支持AirPlay的设备,名称就是your_AirPlay_Name。点击连接后,苹果设备的音频信号就通过Wifi传输到树莓派的3.5mm音频口。这里可以接入音响的信号输入口。


完善

为了使树莓派每次上电后可以自动开启AirPlay服务。需要配置自启动,另外消除噪声。

自启动

创建启动脚本文件

依次执行如下命令,建立一个启动脚本文件。

cd /etc/init.d/
sudo touch shairplay
sudo vim 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

 

其中刚才的脚本文件中的DAEMON_ARGS="-a your_AirPlay_Name"可以设置自己的名字。

DAEMON="/usr/local/bin/shairplay"
DAEMON_ARGS="-a your_AirPlay_Name"
AIRPORT_KEY_DIR="/usr/local/share/shairplay"

之后通过:wq!保存更改, :q!退出编辑器。

加入执行权限

依次执行如下命令。赋予脚本执行权限,并且更新配置信息。

sudo chmod +x /etc/init.d/shairplay
sudo update-rc.d shairplay defaults

执行如下命令,切换到用户目录

cd ~

依次执行如下命令,拷贝airport.key

mkdir /usr/local/share/shairplay
cp shairplay/airport.key /usr/local/share/shairplay

输入一下命令,在etc/rc.local中添加内容

sudo vim /etc/rc.local

添加的内容如下(在exit 0之前)。

# 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

之后通过:wq!保存更改, :q!退出编辑器。

之后通过重启树莓派,就直接可以在苹果设备中选择AirPlay服务了。

消除噪音

如果音响输出有噪声,可以尝试树莓派Audio的pwm模式。
执行如下命令

sudo vim /boot/config.txt

在最后增加如下配置参数

dtparam=audio=on
audio_pwm_mode=2

之后通过CTRL+O 保存更改, CTRL+退出编辑器。

调整声音命令

alsamixer

发表评论

邮箱地址不会被公开。 必填项已用*标注