零成本用snapcast开源项目组建多房间音乐系统

2023-04-14 23:26:16 27点赞 173收藏 26评论

最近搞了一套多房间音乐系统,实现任意设备播放的音乐流转到任何房间的设备播放或者同步播放,现在和大家一起分享。

想象这些场景,实现音频的流转自由

  • 台式电脑没有蓝牙,我想用我的蓝牙耳机听歌,我可以用我的手机作为中介,播放电脑上的任何声音

  • 电脑或手机上用麦克风喊话,各个房间的喇叭都会实时播放你的声音(比如叫起床,吃饭)

  • 我在客厅听音乐,现在想到卧室休息,卧室的音箱同步播放客厅的音乐不间断

  • 客厅的功放设备不支持airplay,但是我可以利用这个系统接收苹果的airplay隔空播放

  • 蓝牙的音质不好,我想播放抖音的音频到音箱,通过wifi,立刻给你搞定

  • foobar播放的音乐,充满每个房间,同步播放

  • 不管是安卓还是苹果手机,总能把音乐投送到指定设备

  • 我想播放nas上的音乐,不管我用平板、手机、还是pc,只要能浏览网页,不用安装客户端

是不是很神奇?先了解下系统的实现原理

系统原理图系统原理图

本系统的核心是snapcast开源项目,一个多房间的音频系统,分为服务端和客户端两部分。服务端捕获(snap)各种播放器播放的音频流,编码(flac,pcm,ogg,opus)后发送(cast)到各个安装有snapcast的客户端,可以是平板、手机、安卓机顶盒或者网页客户端。

音频流的来源,可以分为四大部分,安卓阵营的dlna,苹果的airplay,mopidy播放的本地文件和流媒体服务,手机或电脑的声卡直接捕获的流(只要能播放,就能做内容源)。这样几乎任何节目内容,都能被这个系统捕获,和蓝牙不同的是,它可以网络传输和无损编码,音质没有损失,理论上达到cd级别。

客户端安装到智能设备上,可以是平板、pc、手机、机顶盒、树莓派等。只要能安装snapcast客户端就行。接下来就是连接到你的现有音响系统,可以通过线缆,USBdac,蓝牙等方式。这个可能是唯一的硬件门槛。

一些截图:

malp安卓app控制MPDmalp安卓app控制MPD

mpd的各种端口mpd的各种端口

选择声卡播放选择声卡播放

电脑端snap.net电脑端snap.net

手机端控制snapcast手机端控制snapcast

具体的实现方式:

服务端需要运行在linux系统上,我是在Windows 上的虚拟机运行dietpi 系统,安装snapcast服务和shairport-sync(airplay接收端)、mopidy、upmpdcli(docker安装,用于接受dlna)。都是开源免费的软件,你也可以安装到群晖上。具体功能见图。

客厅的电视盒子和手机是安卓系统,安装了snap.net,一个开源的跨平台snapcast客户端带声卡采集广播功能(采集音频传输到snapcast服务器),pc也安装这个软件。snap.net也是控制中心,可以控制那个设备播放哪个音源(蓝色线框内的部分)。手机安装了MPd的客户端MALP,可以控制mopidy的各种功能,主要用于本地媒体播放和音乐串流服务(国外的多)。也可以访问mpd的网页客户端,进行控制,也可以打开snapcast的网页客户端控制音频的流转,同时只要能上网,你的设备就能临时变成播放终端,不用安装软件。

如果大家感兴趣,可以出详细的教程,也欢迎大家讨论这个平民版的多房间音乐系统。最大的好处是各种设备可以自由组合,充分利用老旧的现有设备,hifi设备,缺点是需要有一个设备充当服务器,可以是虚拟机、树莓派、软路由等。音质比蓝牙好(无损传输),延迟约1秒。听音乐没问题,但是播放视频延迟不可接受,解决办法是用可以调整音视频同步的播放软件,音频设置提前1秒。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
26评论

  • 精彩
  • 最新
  • 这个可以把小爱音响拉进来吗?

    校验提示文案

    提交
    这个我不太清楚 不过这个可以和一个开源项目 家庭只能中心 集成。好像叫home ass。。。什么开头的。具体没有研究

    校验提示文案

    提交
    那玩意我有,不过没做过音乐串流

    校验提示文案

    提交
    收起所有回复
  • 出个教程吧,这个开源项目怎么在网上都搜不到

    校验提示文案

    提交
    github上有 中文资料也有一些不多 玩的人少 主要就是配置文件,安装在dietpi上就是动动鼠标的事情 完全傻瓜瓜 到时候我把虚拟机传上来好了

    校验提示文案

    提交
    收起所有回复
  • 学习版roon,了解一下?

    校验提示文案

    提交
    roon的客户端是不是有平台限制 或者功放支持才行? snapcast几乎全平台没限制

    校验提示文案

    提交
    收起所有回复
  • 比较感兴趣,都docker就好了

    校验提示文案

    提交
    应该可以都用docker实现 我里面都是用snapcast的tcp源 airplay可以用管道

    校验提示文案

    提交
    收起所有回复
  • 请问大神,有没有后续教程,我总结一下,就是要在一个服务器端(比如群晖)安装:1.MPD(获取播放能力);2,upmpdcli(获取dlna接收能力);3,snapcast server(分发能力)。
    音响端安装snapcast client.
    能否具体出一个教程来将如何安装MPD,UPMPDCLI,SNAPCAST呢? 百度了一下,国内此方面教程很少

    校验提示文案

    提交
    你总结的没错!snapcast就是捕获和音频路由。安装很简单,一条命令就安装了。配置方面,snapcast官网有配置案例。推荐使用fifo形式,比较简单。推荐用dietpi虚拟机安装体验一下。

    校验提示文案

    提交
    snapcast已经用debian装了一个,但是前面的MPD,DLNA的render等还没有折腾好,且网上教程很少。同时,还不理解MPD,DLNA和snapcast,3者之间如何关联起来,期待作者出一个详细教程。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 现在还只有linux版吗?

    校验提示文案

    提交
    服务器只有linux版本 虚拟机装个就行 openwrt.也可以

    校验提示文案

    提交
    收起所有回复
  • 速度出啊,急

    校验提示文案

    提交
  • 这个好。研究研究

    校验提示文案

    提交
  • 坐等

    校验提示文案

    提交
  • 请速度😄

    校验提示文案

    提交
  • 没有人讨论,看来都不感兴趣啊

    校验提示文案

    提交
  • 请继续更新搭建过程 [欢呼]

    校验提示文案

    提交
  • 火钳刘明 [鼓掌]

    校验提示文案

    提交
  • 求详细教程

    校验提示文案

    提交
  • 支持教程!

    校验提示文案

    提交
  • [棒棒哒] 写得非常好,介绍通俗易懂。

    校验提示文案

    提交
  • 那么那里可以下无损音乐

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
173
扫一下,分享更方便,购买更轻松