自我介绍
笔者系计算机系在校生,搞机生涯丰富,强迫症患者,喜欢自己给自己找事,想尽办法让生活过的方便一丢丢,多年果粉 & Nexus 粉一枚,未来的码农,目前深陷 Apple Loop 无法自拔。 上一期:跟着上手树莓派(二)—— SSH & VNC 连接
前言截至目前,你应该拥有了一块正常运行的树莓派,掌握了与他互动的两种方式(SSH 以及 VNC),本期让我们开始搞一个小东西,一款名叫 Shairplay 的应用。它可以让你的有线老音箱与树莓派结合,瞬间变成一款支持 AirPlay 的智能 Wi-Fi 音箱,你的 iOS 设备在家中可以无缝连接到同一音箱上,就像下图所示: macOS 上可以按住 Option,点击音量,选择把音频从音箱输出。iOS 上也可以在音乐界面或控制中心里选择从音箱输出。1. 更换软件源刚才说过,这个功能的实现是通过一款叫做 Shairplay 的应用来实现的,我们可以直接在树莓派从软件源上下载安装该应用,但由于树莓派默认的软件源是国外的服务器,访问较慢,所以在开始之前我们把软件源更改为阿里云提供的高速镜像源。(必须感谢下阿里爸爸) ① SSH 登录至树莓派,输入 nano /etc/apt/sources.list。 ② 将文件按下图修改:(注意将原来的 deb-src 那一行的行首加一个 "#" 来注释掉原来的源)
阿里云镜像源: 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③ 然后按 Ctrl + O,回车,Ctrl + X,保存退出。 ④ 最后输入 sudo apt-get update && apt-get upgrade -y 更新,可以看到此时连接的速度已经快到飞起了,待更新完毕,继续下面的教程。 2. 安装 Shairplay接下来就可以愉快的安装 Shairplay 了,一切根据 Github 上的教程走: ① 依次输入以下命令,安装 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 ② 依次输入以下命令,来编译和安装 Shairplay: git clone https://github.com/juhovh/shairplay.git
cd shairplay
./autogen.sh
./configure
sudo make install ③ 至此,你的 Shairplay 就安装完毕了。 3. 第一次运行 Shairplay① 确保你在 shairplay 的路径下,输入 shairplay -a Shairplay,看到以下输出,即成功运行: ② 此时使用你的 iOS 设备查找 Airplay 音箱,即可找到你的小音箱。 4. TrubleShoot (噪音问题)如果你遇到音箱有莫名噪音的问题,除了使用共地滤波器解决一下之外,还可以尝试更改 Audio 的 PWM 模式,修改为图中样子(没有的话就新增),之后重启一下就好了。 5. 设置开机自启截至目前,一旦我们关闭 SSH 的窗口,音箱就不能再用 Airplay 了。而当我们想使用的时候,也需要手动打开,所以设置开机自动启动就是件必备的事情: ① 建立 shairplay 服务,输入: cd /etc/init.d/ sudo touch shairplay sudo 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 Wohnzimmer" # 这里的 Wohnzimmer 可以替换成你想要的音箱名称 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 ③ 依旧 Ctrl+O,回车, Ctrl+X 退出。 ④ 输入 chmod +x /etc/init.d/shairplay ,赋予其可执行权限。 ⑤ 输入 update-rc.d shairplay defaults ,更新 Shairplay 设置。 ⑥ 输入 cd ~ 回到用户目录。 ⑦ 输入以下命令,储存 airport.key。 sudo mkdir /usr/local/share/shairplay sudo cp shairplay/airport.key /usr/local/share/shairplay ⑧ 输入 nano /etc/rc.local,复制以下脚本: # 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 " ⑨ 粘贴到 exit 0 之前,Ctrl+O,回车,Ctrl+X,退出。 ⑩ 输入 reboot,重启,开机就会自动启动 Shairplay 了。 Enjoy it.
我的新浪微博:@Sunbelife,欢迎和我讨论和分享好玩的东西。
附: 1、调整音量,可在树莓派输入:alsamixer 调整。 2、出现:The following packages have unmet dependencies: libavahi-compat-libdnssd-dev 问题可以查看:https://www.douban.com/note/619209826/,如果无法解决,请更换其他软件源。
|