一、背景

  • 背景:在华清学习之余,自行研究了智能家居的东西,为了解决智能家居中背景音乐问题研究如下:调查发现现有技术中有DLNA、AirPlay、Miracast三种。文章后有些项并未验证,后续慢慢实验。

其中DLAN应用最多,但是DLNA不是实时传输,而是在传输数据之前,会先缓冲一小段时间,因此DLNA只能传输移动设备上的图片、视频、音乐等。无法实现多屏同步显示的镜像功能,这是DLNA标准最大的缺陷所在。

Miracast(WiFi-Display)是实时的,它可以实时传输源端(Source)的输出。源端任何屏幕的操作都会被传输到接收(Sink)端。如果源端是播放媒体文件,源端负责先对媒体文件解码,然后再编码成H.264的格式。接收端只需要做H.264的解码就可以了。相对DLNA,Miracast对于WiFi通路的要求要更高一些。

出于技术考虑,DLAN<AirPlay<Miracast,但各自都有局限性。就体验而言,苹果的AirPlay体验最好。支持多设备同时播放。但是苹果的限制极高,在进行下列实验时,需要有苹果设备或者iTunes软件才可以进行。

  • 技术定位:初级
  • 整体思路:主要利用shairport-sync来实现

二、操作步骤

2.1 开发前的准备工作

准备工作一

  • 更新软件,安装依赖
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install autoconf automake libtool
$ sudo apt-get install avahi-daemon
$ sudo apt-get install libltdl-dev libao-dev libavahi-compat-libdnssd-dev
$ sudo apt-get install build-essential git xmltoman autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev libasound2-dev avahi-daemon libavahi-client-dev libssl-dev

使用sudo apt-get install <packgename>时出现提示无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

可以换个命令sudo aptitude install <packgename>,因为aptitude会自动把所有依赖的库都帮你顺着找到,并下载好。而apt-get下载某个包中它的所有依赖项都必须存在,这就是为什么我们每次执行apt-get的时候都需要先apt-get update的更新软件包的原因。

如果提示找不到aptitude,可以先使用sudo apt-get install aptitude进行下载

准备工作二

  • 关闭WiFi节能(非必要)
$ sudo iwconfig wlan0 poweroff

2.2 编译安装 shairport-sync

  • 下载、编译、安装
$ git clone https://github.com/mikebrady/shairport-sync.git
$ cd shairport-sync
$ autoreconf -i -f
$ sudo ./configure --sysconfdir=/etc --with-alsa --with-avahi --with-ssl=openssl --with-systemd
$ make
$ sudo make install

2.3 设置开机自启并启动

$ sudo iwconfig wlan0 poweroff

2.4更改设备名称

Shairport-sync的配置文件在:/etc/shairport-sync.conf

编辑这个文件,更改:name = "名称",然后重启服务:

sudo systemctl restart shairport-sync.service 

或者直接sudo reboot重启也行 iφ(゜▽゜*)♪

2.4切换声卡(未验证)

如果你用的不是树莓派的板载声卡而是外接的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 asymplayback.pcm {type plugslave.pcm "hw:0,0"}capture.pcm {type plugslave.pcm "hw:1,0"
}

三、总结

  • 通过此次实验主要学会了使用aptitude指令来解决依赖问题,整个实验难度不高,但是却卡在了依赖问题上。
  • 缺少依赖倒置编译无法生成make包进而无法make。
  • 最后我在树莓派4上成果运行,效果还可以,Windows下的iTunes可以同步播放,基本听不出延迟,于homepod延迟接近。(小米网络收音机虽然也支持airplay但是不会和电脑播放的同步,会提前于电脑)。但是声音比较小(可能存在个体差异),暂时没有发现解决方法。

参考:WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍

https://github.com/mikebrady/shairport-sync/blob/master/INSTALL.md

树莓派airplay_weixin_33887443的博客-CSDN博客

软件包间的依赖关系

基于树莓派的手机音频播放功能实现_zhonglunshun的专栏-CSDN博客_树莓派aux

四、后续

4.1直接安装(已验证)

可以直接用apt-get安装,已经实验可行性(在乌班图服务器和乌班图桌面版均好使)。ubuntu 16.04 的软件仓库里已经集成了 shairport-sync,这样只需要执行 apt install 就可以安装了,安装后自动开机自启。

但是 shairport 还需要 avahi-daemon 这个服务,avahi-daemon 是开源的,它实现了苹果的 mDNS 协议(在苹果的设备上对应的服务是 Banjour)。shairport 需要在 avahi 上注册自己。

按照_weixin_39978444的博客-CSDN博客的方法直接使用sudo apt install avahi-daemon;sudo apt install shairport-sync这两条指令。

$ sudo apt-get install libssl-dev libavahi-client-dev libasound2-dev libao-dev libpulse-dev
$ sudo apt-get install shairport-sync

Ubuntu配置机顶盒踩坑记录(Airplay/DLNA)/UPuP/Miracast

关于Raspbian上安装AirPlay服务之后的问题_鸟不知把小绿带到哪里去了-CSDN博客

4.2 路由器安装shairplay(未验证)

小度路由添加airplay_u014682756的专栏-CSDN博客

4.3 STM32(未验证)

基于STM32和W5500实现AirPlay音频播放_WIZnet2012专栏-CSDN博客

Linux下实现苹果AirPlay音频服务器相关推荐

  1. Linux下利用rsync实现多服务器文件同步

    Linux下利用rsync实现多服务器文件同步 目标:多服务器文件同步 环境:2台centos5.6 Web端:192.168.20.20 Backup端:192.168.20.21 需要备份目录为: ...

  2. Linux下的主辅DNS服务器同步

    Linux下的主辅DNS服务器同步 一.系统环境介绍 二.辅助DNS搭建 1.安装yum包 2.设置服务自启 3.编辑dns主配置文件 4.编辑区域文件 5.配置正向文件 6.配置反向文件 7.重启服 ...

  3. 怎么在linux下使用ftp服务器,怎么在Linux下建立安全的FTP服务器?

    怎么在Linux下建立安全的FTP服务器? 2018-08-31 15:53 分享人:老牛 学习Linux系统时,你可能会遇到网络服务的问题,这里将介绍linux FTP服务器安全及DHCP服务的实现 ...

  4. Linux下安装多个Tomcat服务器

    目录 QUESTION:阿里云服务器Linux下安装多个Tomcat服务器的方法 ANSWER: 一.安装前的下载相关文件 1.1下载tomcat 1.2准备工具 二.登陆linux服务器进行安装 2 ...

  5. linux mysql多实例启动_Mysql实例Linux下启动多个mysql服务器例子

    <Mysql实例Linux下启动多个mysql服务器例子>要点: 本文介绍了Mysql实例Linux下启动多个mysql服务器例子,希望对您有用.如果有疑问,可以联系我们. MYSQL教程 ...

  6. linux日志采集配置,linux下配置rsyslog日志收集服务器案例

    原标题:linux下配置rsyslog日志收集服务器案例 环境配置 centos6系统 client1:192.168.1.33 centos7系统 client2:192.168.1.44 cent ...

  7. linux下新增ftp账号,【转】Linux下添加FTP账号和服务器、增加密码和用户,更改FTP目录...

    转自:http://blog.csdn.net/cloudday/article/details/8640234 1. 启动VSFTP服务器 A:cenos下运行:yum  install  vsft ...

  8. linux下使用苹果dmg格式文件 目前状态

    linux下使用苹果dmg格式文件 MAC应用属于 FreeBSD (Unix),Unix 是需要付费的,Linux想要免费用暂时就别想了. MAC应用属于 FreeBSD (Unix),Unix 是 ...

  9. linux进行校时ntp,Linux下快速搭建ntp时间同步服务器

    Linux下快速搭建ntp时间同步服务器 背景: 服务器多了,时间是否一致以及是否准备就显得格外重要,虽然这个问题总是被忽略,但是统一时间是很有必要的,因为时间问题导致服务出现问题也是司空见惯,本文简 ...

最新文章

  1. 自动驾驶中的机器学习
  2. C#对话框-使用打开和保存对话框
  3. java 日期及别的小技巧
  4. python第四章单元测试_Python 单元测试
  5. 比目鱼搜索不能用了_win10搜索功能失效解决办法
  6. Quartz学习总结(2)——定时任务框架Quartz详解
  7. 百度人脸识别离线SDK_Android版_在线激活失败:not enough param_解决方案---百度人脸识别技术应用005
  8. JSONString 与 JSONData 与字典或者数组互相转化
  9. 利用 Kubernetes Service 的 selector 无痛运维在线 pod
  10. html希腊字符,希腊字母
  11. TT 的旅行日记 Week7作业B题
  12. siteground主机黑五优惠最低2折-2.99美元每月-vps主机-WordPress主机服务器
  13. 数模论文排版—从第三页设置页码,页码格式为page X of Y
  14. mac uvc相机_Mac相机无法正常工作? 这是解决方法
  15. 舒缓肩颈酸痛,温暖呵护颈椎,宾多康智能颈椎按摩仪体验
  16. 输入数字转换成英文输出
  17. 【数位DP】Windy数
  18. 简述运用计算机思维解决问题的步骤,计算思维能力主要包括问题及问题求解过程的符号表示、逻辑思维与抽象思维、形式化证明、建立模型和模型计算、利用计算机技术等能力 答案:√...
  19. 心脏流血(Heartbleed )漏洞详解
  20. 电脑插入USB鼠标unknown device问题解决方案

热门文章

  1. 初探DirectShow
  2. 【STC15控制WS2812 RGB彩灯级联】
  3. 如何禁止Windows Defender自动扫描
  4. SETUP FACTORY安装完成后自动运行软件
  5. linux内核版本指什么意思,Linux的内核版本是怎么回事
  6. 上帝之眼——GIS技术的决定性作用
  7. 打开bat文件闪退以及‘java‘不是内部或外部命令,也不是可运行的程序或批处理文件【本人亲测解决方法】
  8. 只有程序员才能看懂的16张高端漫画
  9. Codeforces868F Yet Another MinimizationProblem
  10. iOS Safari阅读模式分析过程