百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

30元实现你的平价sonos—音响升级DLAN和Airplay,附平价音响推荐

yuyutoo 2025-02-15 01:46 1 浏览 0 评论

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:拉德布鲁赫信徒



1 引言

这篇文章的一切,要从什么值得买的金币说起。前一阵发现什么值得买的金币跟京东云无线宝给的京豆已经攒了很多很多了,就套现了一波,顺手买了一个音响,就是很普通的一个音响,漫步者的R201BT。



虽然是一个蓝牙音响把,但是关于听歌这种事情,就是蛮随性的,有时候用着电脑(音响是接在电脑上的),有时候又是手机或者平板。有时候就是很想让这个音响成为某种意义上的“共享音响”,即随时随地都可以享受音乐(瞎听加木耳,没必要跟我说加钱什么的,这个音响对我来说已经足够使用了)。

在这个立意下,在猫店狗店进行了一番深入的学习,市面上主流的协议就是两种,即苹果的airplay和安卓等设备使用的dlan(当然还有qq音乐自己搞出来的qplay,因为确实用得少就不在我的考虑范围了),按照我的理解归纳为以下几种:

一种就是实体音响,自带各种协议的,这里比较常见的就是苹果的HomePod和Sonos这种音响,但是相对而言价格较高,而且某种意义上是封闭的。当然了,某哈曼卡顿的R1音响当年还是有一定性价比的,但是现在价格被炒上去了就瞬间不香了。还有一种就是在传统的音响上面进行升级,即所谓的无线音频接收器。

作为实体音响来说,主要存在两点,一点就是相对封闭,比如苹果的HomePod对苹果设备支持较好,但是对其他设备支持欠缺,Sonos在我看来设置过于麻烦。最重要的一点,就是价格普遍偏高,这种东西在自己有限的购买力范围内能够给自己带来快乐就行,本身产生不了其他的价格,因此对于我个人而言是不愿意花大价钱去买音响的。

而无线音频接收器而言,我觉得没有啥缺点,唯一的缺点就是贵,以下粘贴几个,可以感受一下:


身为垃圾佬,看着手头捡的这些垃圾,故萌生了自己做一个的想法。单纯做一个这样的音频接收器,需要的只是一个linux设备,性能根本不需要太多。手头的设备,之前发过的荣品rk3399(这个后面开文另外再说新用途)、sw799(一款rk3399的板子,但是接口跟资料确实是太少,不是很符合我的需求),还有一个rk3588的orangepi5(性能单纯拿来做一个这个属实浪费)。只试了一下荣品的设备,确实满足需求,但是rk3399的芯片拿来做这个确实大材小用了。

根据立意,这款设备我定下的标准就是:性能够用,处理器要支持64位的,ubuntu的版本一定要能支持到比较新的版本(个人的习惯),然后支持wifi(省去拖网线的烦恼),有音频接口。因此对应的只能是一些开发板啥的,但是新的开发板哪怕是全志h3芯片的价格都要100多,捡垃圾的话,支持系统都会或多或少的存在一些问题,有的就是纯粹移植一个系统,能够启动就算完事了,至于板子上的硬件能不能驱动起来,并不在考虑范围之内。

在小黄鱼浪迹了几天之后,终于是发现了这款30块钱的设备,正好能够契合我的需求,暂且给它起一个名字,就叫rk3118-box。

基本上该有的接口也都有了,比一些广告机拆下来的设备乱七八糟不知道咋用的接口,看起来观感好上很多。rk3118就是一款普普通通的64位芯片,但是神奇的是卖家竟然给刷上了ubuntu22.04。主要的几个接口如hdmi、音频接口、有线网口(好像是百兆的)、还有sd卡槽跟usb口,基本上该有的也都有了,不该有的一个都没有。个人感觉应该就是从某个机顶盒上面拆下来的板子,但是能够支持完整的ubuntu就比cm311这种只支持armbian的要好上不少了。


2 效果展示

以下分别展示以下airplay和dlan播放的效果,会分别列出一些存在的问题。

综合来说,这里支持的Airplay是通过AirPlay2实现的,存在的问题主要就是有一定的延迟,但是对于我来说还属于可以接受的范围。而DLAN的表现就比较稳定,但是也会存在一点点小bug,就是有时候快速点一首歌的时候会没有反应,但是切换一下也就好了。


3 部署

到手当然是先升级一下系统,SSH的密码是armbian还是root,自己试一下就好的。

sudo apt update

sudo apt upgrade

然后就进入部署阶段。

3.1 Airplay

这里使用的shairport-sync去实现AirPlay的功能。这个项目同时支持AirPlay的一代和二代。

官方项目地址里面指明了两种部署方式,一种是本地部署,还有一种是通过Docker部署。经过实测,Docker总会出现一些奇怪的问题,因此还是用最基本的方式部署。当然,大家也可以尝试一下,有跑通的记得艾特我一下,我这出现的问题就是使用都没有声音。

3.1.1 部署

1 安装必要的依赖项

sudo apt-get install build-essential git xmltoman autoconf automake libtool libdaemon-dev libpopt-dev libconfig-dev libavahi-client-dev libssl-dev libasound2-dev libsoxr-dev avahi-daemon

2 克隆shairport-sync的源代码并编译

git clone https://github.com/mikebrady/shairport-sync.git

cd shairport-sync

autoreconf -i -f

./configure --sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-systemd

make

3 安装shairport-sync

sudo make install

4 启动shairport-sync

shairport-sync

到这一步应该可以在Apple设备上看到一个名为“Shairport Sync”的AirPlay输出。试着播放一些音乐,看看是否能听到声音,如果可以听到,就证明部署成功了。如果没有的话,就进入下一步。

3.1.2 配置shairport-sync


1.以root身份打开 /etc/shairport-sync.conf 文件。使用以下命令:

sudo nano /etc/shairport-sync.conf

2.找到 [alsa] 部分,并取消 output_device 设置的注释,然后将其值设置为您的音频设备名称。这里的设备是“ANALOG”。所以,需要将其设置为:

output_device = "hw:ANALOG";

当然,也可以设置成hw:0,0 ,表示您要使用的是卡0(ANALOG)的设备0。

具体示例如下:

alsa =

{

output_device = "hw:0,0"; // the name of the alsa output device. Use "shairport-sync -h" to discover the names of ALSA hardware devices. Use "alsamixer" or "aplay" to find out the names of devices, mixers, etc.

// mixer_control_name = "PCM"; // the name of the mixer to use to adjust output volume. No default. If not specified, no mixer is used and volume in adjusted in software.

// mixer_control_index = 0; // the index of the mixer to use to adjust output volume. Default is 0. The mixer is fully identified by the combination of the mixer_control_name and the mixer_control_index, e.g. "PCM",0 would be such a specification.

// mixer_device = "default"; // the mixer_device default is whatever the output_device is. Normally you wouldn't have to use this.

// ...

};

3.保存文件并退出编辑器。

4.重启shairport-sync服务:

sudo systemctl restart shairport-sync

到这里就Airplay已经部署完成了,关于设置开机启动,可以参考一下下面的内容。

sudo systemctl enable shairport-sync

sudo systemctl start shairport-sync

3.2 DLAN

DLAN是通过Gmrender来实现的,以下仅给出步骤:

3.2.1 安装依赖

sudo apt-get install libupnp-dev libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-alsa autoconf

3.2.2 安装 Gmrender

1、定位到home文件夹并克隆程序源码

cd ../home/
git clone

2、转到刚刚克隆的gmrender-resurrect文件夹并安装

cd gmrender-resurrect
./autogen.sh
./configure
sudo make
sudo make install

3、设置开机自启动

因为是通过源码编译安装的 gmediarender,那么我们需要手动创建一个 Systemd 服务文件。请按照以下步骤操作:

创建一个新的 Systemd 服务文件:

sudo nano /etc/systemd/system/gmediarender.service

将以下内容粘贴到编辑器中:

[Unit]

Description=GMRender-Resurrect (DLNA Media Renderer)

After=network.target

[Service]

User=root

Group=root

ExecStart=/usr/local/bin/gmediarender -f YOUR_RENDERER_NAME --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault --logfile=/var/log/gmediarender.log

[Install]

WantedBy=multi-user.target

注意:将 YOUR_RENDERER_NAME 替换为您希望显示在 DLNA 控制器应用中的渲染器名称。

保存并退出编辑器 (在 nano 编辑器中,按 Ctrl + X,然后按 Y 确认保存,再按 Enter 键)。

重新加载 Systemd 配置:

sudo systemctl daemon-reload

启动 gmediarender 服务:

sudo systemctl start gmediarender.service

检查 gmediarender 服务的状态:

sudo systemctl status gmediarender.service

如果服务正在运行,设置为开机启动:

sudo systemctl enable gmediarender.service

完成这些步骤后,gmediarender 应该在后台运行,并且Android 设备应该能够找到它。确保 Android 设备和运行 gmediarender 的设备位于同一局域网上。


4 结语

教程到这里差不多就算结束了。捡垃圾嘛,最终的目的就是花小钱办大事,并且享受折腾的乐趣。这个小设备呢,确实比较便宜,30块钱就可以实现很多很多的功能,基本上大家平日里说的docker、homeassitant也是都可以部署的,我这里只是切片去讲一下如何将这种设备落地,即大家在生活中可以切实的感受到这个设备。64位的完整ubuntu系统(不要拿一些设备刷了armbian的来跟我这叨叨,armbian是精简版的Debian,很多东西都是缺失的)加上wifi,这种设备捡垃圾的时候确实难找,而且体积相对也是适中的。

关于音响的部分,除了开头就提到的漫步者,当时考虑的还有另外一款:



音响的选择嘛,其实说白了够用就行的。毕竟也不是每个人都是发烧友,也没必要搞一些加钱或者鄙视链啥的,只要花钱能够满足自己的需求,让自己能够开心就好的。疫情刚刚结束,大多数人的日子都不好过,所以花小钱办大事,或者说花一点小钱给自己买来一点快乐这才是至关重要的。

后面准备拿之前的荣品那个板子,捣鼓一个支持gpt的智能音响出来,弄好了再发文把。



相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: