将软路由、服务器、NAS等搭建airplayer

将软路由、服务器、NAS等搭建airplayer

喜欢听歌的大虾们对本地点播情有独钟,毕竟现在的音乐软件对版权收得越来越紧,原来能听歌的许多软件纷纷删库And Run。

小米手机可以直接用妙享在小爱音箱上播放,直接有airplay的感觉,无延迟,比蓝牙好得太多了,但想把家里的软件路由和Ubuntu服务器也作为播放器,就可以将原先淘汰下来的传统有源音箱作为听歌利器了。

万能的github找到airplay2播放器库:shairport

地址:https://github.com/mikebrady/shairport-sync

一、软路由安装

Openwrt直接安装airplay2插件即可

二、ubuntu服务器安装

1、编译安装

安装操作系统的步骤,我就不在这里赘述了,网上一大堆,挑个自己看着顺眼的教程一步步做就好了。

第一步:安装软件依赖软件包:

sudo apt-get install build-essential git

autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev

avahi-daemon libavahi-client-dev

libssl-dev

libpolarssl-dev

libsoxr-dev

第二步:克隆github的源代码到本地

git clone

第三步:编译安装shariport

cd shairport-sync

autoreconf -i -f

./configure --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd --with-systemdsystemunitdir=/lib/systemd/system

注:configure的参数,作者主页的写的不全,少了–with-systemdsystemunitdir=/lib/systemd/system这一行,我给补上了。否则编译会出错,其实就是没把变量带进去,导致cp失败

make
sudo make install

getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null

getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null

以上和作者主页的基本一致,需要补充的命令如下:

sudo cp scripts/shairport-sync /etc/init.d/

sudo update-rc.d shairport-sync defaults 90 10

注:由于新版linux采用systemd取代旧的systemV,所以新版linux已经没有chkconfig命令来配置开机启动了,新版的命令就是update-rc.d。

编辑配置文件:

vi /etc/shairport-sync.conf
general = {
name = "Mike's Boombox";
};


alsa = {
output_device = "hw:0";
mixer_control_name = "PCM";
};

注:配置文件主要设置general和alsa这两部分就可以运行了,如果想深入研究其他参数,可以看看他配置文件里面的注释。

name = “Mike’s Boombox”; #这个就是你手机里要显示的设备名称,如下图所示(我用的是Shairport Sync Player):

用shairport-sync搭建属于自己的airplay点唱机

output_device = “hw:0”; #这里要配置音频输出的设备编号。

这个编号怎么获得呢,要通过这个命令:

aplay -l

显示如下:

用shairport-sync搭建属于自己的airplay点唱机

大家看一下device的id,比如:

hw:0 代表的是我第一个设备,系统默认的声卡 #一般都是选这个

hw:3 代表我第二个设备HDMI #因为shairport只支持声音的传输,所以不选这个

注:如果aplay命令没有输出或者出现错误提示,一种可能是你声卡禁用了,还有就是你的声卡驱动,linux不支持。解决办法就是自己下载编译alsa驱动,网上有这方面帖子。

mixer_control_name = “PCM”; #这个就是要制定音量控制器的名称,如果你不懂的话就是选默认PCM就好了,瞎选程序启动会有问题

保存好配置之后,运行:

sudo /etc/init.d/shairport-sync start

大功告成用shairport-sync搭建属于自己的airplay点唱机 ,拿出iphone从屏幕下方呼出菜单,看到Airplay的字样了吧用shairport-sync搭建属于自己的airplay点唱机

用shairport-sync搭建属于自己的airplay点唱机

选择好你搭建好的设备(第二个):

用shairport-sync搭建属于自己的airplay点唱机

打开QQ音乐,选一首歌试试吧用shairport-sync搭建属于自己的airplay点唱机 。由于本人不是发烧友,所以此篇文章只算是抛砖引玉,这个东西可以玩儿的很灵活,没有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:

$ docker run -d --restart unless-stopped --net host --device /dev/snd \
    mikebrady/shairport-sync:latest

To run the classic version:

$ docker run -d --restart unless-stopped --net host --device /dev/snd \
    mikebrady/shairport-sync:latest-classic

Options

Command line options will be passed to Shairport Sync. Here is an example:

$ docker run -d --restart unless-stopped --net host --device /dev/snd \
    mikebrady/shairport-sync:latest \
    -v --statistics -a DenSystem -- -d hw:0 -c PCM

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:

# Example docker compose config.

services:
  shairport-sync:
    image: mikebrady/shairport-sync:latest
    network_mode: host
    restart: unless-stopped
    # environment:
    #  PULSE_SERVER: unix:/tmp/pulseaudio.socket # Path for PulseAudio socket
    #  PULSE_COOKIE: /tmp/pulseaudio.cookie # Path for PulseAudio cookie
    devices:
      - "/dev/snd" # ALSA device
    # volumes:
    #   - ./volumes/shairport-sync/shairport-sync.conf:/etc/shairport-sync.conf # Customised Shairport Sync configuration file.
    #   - /run/user/1000/pulse/native:/tmp/pulseaudio.socket # PulseAudio socket when using that backend
    logging:
      options:
        max-size: "320k"
        max-file: "10"
sudo docker-compose up -d

docker安装即可

一次重装系统后播放无声音

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

授权:

sudo chmod -R a+rwx /dev/snd

命令播放音乐:

madplay /tmp/extroot/mp3/xx.mp3

调整音量

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 进行推流。

img

打开 AirMusic 后,软件会扫描当前局域网下所有支持推流的音响设备,并且会在设备名前面列出设备对应的协议。将手机上正在播放的音频投射到这些设备也很简单——点击列表中想要投射的设备,然后在弹出的对话框选择「立即开始」,稍等几秒钟,原本手机上的正在播放的音频就被投射到对应的音箱中了。

img

你可以在当前 Android 设备的通知中看到 AirMusic 服务的运行情况、控制音量大小,如果你想结束投射那么只需要点击「闪电」按钮来断开,这时候正在播放的音频就会回到 Android 设备中继续播放。

img

AirMusic 也提供了非常丰富的设置项目,其中基础的设置项包括了音频投射的方式,音频控制以及音量大小控制的粒度等等。此外对于不同的协议还可以进行单独的设置,比如说 AirPlay 中你可以设定音频延迟的时间,对于 Sonos 则可以调整音频转换的格式等等。针对 Spotify 这样特定的应用甚至还有其他的解决方案(虽然通过 Spotify Connect 也可实现类似的效果)。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 vault@coolxy.cn

×

喜欢就点赞,疼爱就打赏

github