将软路由、服务器、NAS等搭建airplayer
喜欢听歌的大虾们对本地点播情有独钟,毕竟现在的音乐软件对版权收得越来越紧,原来能听歌的许多软件纷纷删库And Run。
小米手机可以直接用妙享在小爱音箱上播放,直接有airplay的感觉,无延迟,比蓝牙好得太多了,但想把家里的软件路由和Ubuntu服务器也作为播放器,就可以将原先淘汰下来的传统有源音箱作为听歌利器了。
万能的github找到airplay2播放器库:shairport
地址:https://github.com/mikebrady/shairport-sync
一、软路由安装
Openwrt直接安装airplay2插件即可
二、ubuntu服务器安装
1、编译安装
安装操作系统的步骤,我就不在这里赘述了,网上一大堆,挑个自己看着顺眼的教程一步步做就好了。
第一步:安装软件依赖软件包:
1 | sudo apt-get install build-essential git |
第二步:克隆github的源代码到本地
第三步:编译安装shariport
1 | cd shairport-sync |
注:configure的参数,作者主页的写的不全,少了–with-systemdsystemunitdir=/lib/systemd/system这一行,我给补上了。否则编译会出错,其实就是没把变量带进去,导致cp失败
1 | make |
以上和作者主页的基本一致,需要补充的命令如下:
1 | sudo cp scripts/shairport-sync /etc/init.d/ |
注:由于新版linux采用systemd取代旧的systemV,所以新版linux已经没有chkconfig命令来配置开机启动了,新版的命令就是update-rc.d。
编辑配置文件:
1 | vi /etc/shairport-sync.conf |
注:配置文件主要设置general和alsa这两部分就可以运行了,如果想深入研究其他参数,可以看看他配置文件里面的注释。
name = “Mike’s Boombox”; #这个就是你手机里要显示的设备名称,如下图所示(我用的是Shairport Sync Player):
output_device = “hw:0”; #这里要配置音频输出的设备编号。
这个编号怎么获得呢,要通过这个命令:
aplay -l
显示如下:
大家看一下device的id,比如:
hw:0 代表的是我第一个设备,系统默认的声卡 #一般都是选这个
hw:3 代表我第二个设备HDMI #因为shairport只支持声音的传输,所以不选这个
注:如果aplay命令没有输出或者出现错误提示,一种可能是你声卡禁用了,还有就是你的声卡驱动,linux不支持。解决办法就是自己下载编译alsa驱动,网上有这方面帖子。
mixer_control_name = “PCM”; #这个就是要制定音量控制器的名称,如果你不懂的话就是选默认PCM就好了,瞎选程序启动会有问题
保存好配置之后,运行:
sudo /etc/init.d/shairport-sync start
大功告成 ,拿出iphone从屏幕下方呼出菜单,看到Airplay的字样了吧 :
选择好你搭建好的设备(第二个):
打开QQ音乐,选一首歌试试吧 。由于本人不是发烧友,所以此篇文章只算是抛砖引玉,这个东西可以玩儿的很灵活,没有MiniPC的可以买个蓝莓派,而且官方也是推荐用这个。音频处理这块可以自行添加USB声卡什么的。。。usb音频设备的ID选择可以参考文章
Docker安装(最喜欢的方式,绿色无污染,卸载简单)
Shairport Sync Docker Image
Available at: https://hub.docker.com/r/mikebrady/shairport-sync
Docker Run
To run the latest release of Shairport Sync, which provides AirPlay 2 service:
1 | $ docker run -d --restart unless-stopped --net host --device /dev/snd \ |
To run the classic version:
1 | $ docker run -d --restart unless-stopped --net host --device /dev/snd \ |
Options
Command line options will be passed to Shairport Sync. Here is an example:
1 | $ docker run -d --restart unless-stopped --net host --device /dev/snd \ |
This will send audio to alsa hardware device hw:0
and make use of the that device’s mixer control called PCM
. The service will be visible as DenSystem
on the network.
The image is built with PulseAudio backend support. To use it, refer to docker-compose.yaml
for required environment variables and mounts. You might need to adjust authentication on your PulseAudio server (PA documentation) and set default backend to pa
via either command line option -o
or general.output_backend
field in config file.
Configuration File
To get access to the full range of configuration options, pass the configuration file to /etc/shairport-sync.conf
in the container using the -v
option or docker compose.
安卓手机投放
安卓手机想要投放歌曲,就用ALLConnect软件投放
docker-compose.yaml:
1 | # Example docker compose config. |
1 | sudo docker-compose up -d |
docker安装即可
一次重装系统后播放无声音
1 | aplay -l |
授权:
1 | sudo chmod -R a+rwx /dev/snd |
命令播放音乐:
1 | madplay /tmp/extroot/mp3/xx.mp3 |
调整音量
1 | alsamixer |
两款小工具,让 Windows 和 Android 也能推流音频到 AirPlay
https://sspai.com/post/68654#!
Windows 的解决方案:TuneBlade
Android 的解决方案:AirMusic
虽然很多 Android 设备商都提供了类似 AirPlay 的推流解决方案,但最大的问题依旧是「没有统一规范」,有的在系统层级原生支持 DLNA,有的却只支持 Google Cast。如果家中音箱设备只支持 AirPlay,那就只能通过第三方软件来实现类似 iPhone 的推流效果。
AirMusic 就是这样一款可以将 Android 上正在播放的音频流推送到局域网 AirPlay 音箱的小工具,除了支持 AirPlay 之外,它还额外支持 DLNA、Google Cast、Sonos、Denon HEOS 等设备。
受制于 Android 系统限制(不允许应用之间互相监听音频),这样的音频流推流操作往往需要对设备进行 root 操作;但如果你的系统版本在 Android 10 以上,那么也可以免 root 进行推流。
打开 AirMusic 后,软件会扫描当前局域网下所有支持推流的音响设备,并且会在设备名前面列出设备对应的协议。将手机上正在播放的音频投射到这些设备也很简单——点击列表中想要投射的设备,然后在弹出的对话框选择「立即开始」,稍等几秒钟,原本手机上的正在播放的音频就被投射到对应的音箱中了。
你可以在当前 Android 设备的通知中看到 AirMusic 服务的运行情况、控制音量大小,如果你想结束投射那么只需要点击「闪电」按钮来断开,这时候正在播放的音频就会回到 Android 设备中继续播放。
AirMusic 也提供了非常丰富的设置项目,其中基础的设置项包括了音频投射的方式,音频控制以及音量大小控制的粒度等等。此外对于不同的协议还可以进行单独的设置,比如说 AirPlay 中你可以设定音频延迟的时间,对于 Sonos 则可以调整音频转换的格式等等。针对 Spotify 这样特定的应用甚至还有其他的解决方案(虽然通过 Spotify Connect 也可实现类似的效果)。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com