每天学点儿树莓派(番外一)——AirPlay播放器
来源:互联网 发布:空浪 知乎 编辑:程序博客网 时间:2024/06/03 16:23
这两天手头暂时没有什么可以折腾的东西,公司里也比较忙。思来想去不如放下脚步写点儿树莓派好玩的东西。所以就搞了个番外篇,以后也会不定期的写几篇番外篇来介绍树莓派的各种好玩的用法。
AirPlay是苹果公司推出的一套无线音乐解决方案。现在我们手里的iPhone、iPad甚至是Apple Watch等设备还有电脑上的iTunes都支持AirPlay。但是支持AirPlay功能的音响设备都贵得要死,作为屌丝的我自然是感觉买那么贵的音响实在是不合算。前两天突发奇想,如果树莓派可以支持AirPlay的功能,那么不就可以让我享受一把无线音乐的自由自在了吗?于是谷歌了一下,发现还真有解决方案。
总起来说就是使用了一段Perl脚本来实现的功能,当然最终还是调用的C的程序。废话不多说,开始:
1.更新软件列表和软件
sudo apt-get updatesudo apt-get upgrade
2.安装各种必须的库
sudo apt-get install libao-dev libssl-devsudo apt-get install libcrypt-openssl-rsa-perl libio-socket-inet6-perlsudo apt-get install libwww-perl avahi-utils libmodule-build-perl
3.安装Perl Net-SDP
sudo cpaninstall Net::SDP
4.安装Shairport
git clone https://github.com/hendrikw82/shairport.gitcd shairportmake
到此为止,所有需要的软件都已经安装好了,如果我们使用如下命令,就可以启动AirPlay服务器了。
./shairport.pl -a myPi
呃,当然,咱们不会就这么结束了,因为你会发现如果你把这条命令敲上去,服务是启动了,也能用了,但是SSH的终端却被程序阻塞了。此时一旦你关闭了SSH终端,那么shairport程序也会被关闭了。这显然不是我们想要的状态啊。
能够解决上述问题的方案就是把它设置成服务。
5.将Shairport设置成为系统服务
首先进入shairport文件夹,make install一下,然后把shairport.init.sample复制到/etc/init.d/目录下
cd shairportsudo make installsudo cp shairport.init.sample /etc/init.d/shairport
修改权限,顺道加个开机启动
cd /etc/init.dsudo chmod a+x shairportsudo update-rc.d shairport defaults
编辑shairport文件
sudo vim /etc/init.d/shirport
定位到DAEMON_ARGS="-w $PIDFILE"
的那一行,并且修改成DAEMON_ARGS="-w $PIDFILE -a myPi"
。保存退出。
6.启动服务
sudo service shairport start
打开你的iPhone的AirPlay,用你的音响来感受音乐吧~
7.让电脑和树莓派共享一套音响设备
话说我接在树莓派上的这套音响原来可是在电脑上用的啊,就这么给我霸占了,以后电脑用啥啊?来回拔来拔去的太麻烦了。于是上网查了查2进1出的音频源选择器,没想到还真有这种东西!后来想想实现一个也没什么,挺简单的。这里给出一个电路图,喜欢DIY的同学可以参考一下。
PS:据说不做成共地的话,可以有效避免串扰哟~
这里由于我手头的工具不是很齐全,就没折腾着再自己去焊个板子,直接在某宝买了个成品。哪天心情好拆开改装一下也好。
还有一点就是,不论是这个图还是我买的切换器都是用的开关来控制音源选择的,这在物联网时代来说有些low啊。感兴趣的同学可以考虑怎么把它设置成软切换的,或者干脆自动切换的。欢迎大家留言讨论!
- 每天学点儿树莓派(番外一)——AirPlay播放器
- 每天学点儿树莓派(一)——开山篇
- 每天学点儿树莓派(二)——光敏控制LED
- 每天学点儿树莓派(三)——使用IDE提高效率
- 音乐播放器AirPlay初次见面
- 每天来点儿负能量(精选)
- 视频播放器上实现AirPlay投屏功能
- 视频播放器上实现AirPlay投屏功能
- AirPlay视频播放协议抓包(非Mirror)
- 每天学一点点英语——(ignorance)
- 树莓派3B+ 云音乐(AirPlay)
- ios开发——AirPlay相关文章
- 每天学点儿技术之写得又快又好的秘密
- 每天一学——VAB RANGE
- 每天学JAVA——数组
- 每天学JAVA——String 类
- 每天学一点Swift——前言
- 每天学点java—文档注释
- iOS讲解迷惑--Swift中函数的使用
- Linux_shell编程基础_source命令和点命令
- 利用pugixml 将xml转化为string
- hiho 1 最长回文子串
- 10进制转换成16进制
- 每天学点儿树莓派(番外一)——AirPlay播放器
- 博客数据库设计
- 策略模式
- JSP/Servlet-----8、JSP的7个内置标签
- iOS开发学习之C语言---C05 函数-2
- 对linux编译模块make -C path_to_kernel_src M=`pwd` modules的理解
- c语言中的数组,一维二维的概念和定义
- fastmm 遇到的问题
- linux分区之gpt