2025年4月15日星期二

私密图纸音乐室

私密图纸音乐室开放

[产品]

本项目只用于学习,房间分隔的开放音乐室,体验地址http://107.173.254.22/


本项目只用于学习,请别用于非法用途.

体验地址 http://107.173.254.22/

创作动机

需求来自于在24冬,和同学在复习期末考试时为缓解压力去寻找有哪些较好的音乐室共享点播解决方案,熟知的"网易云一起听"由于需要移动端平台的要求,对我这个需要用PC进行复习的环境造成极大不便,加上网易云的版权和VIP限制导致无法获得部分想听的歌曲,因此不考虑.

接下来是QQ(没错就是IM的功能不是QQ音乐)的一起听,虽然能在PC上点歌,但由于相似的限制在QQ音乐库的问题因此也不考虑.

接着我在网上查找有哪些解决方案,Jusic-Serve-Houses是谷歌权重最高的方案,他提供了前端后端分离的音乐室解决方案,提供QQ音乐和网易云音乐两个音乐库,支持歌曲id,歌单id点歌.我和我的同学使用了一段时间,为我们的复习提供了很多的乐趣

还有一个隐藏的音乐库,只收录了李志歌手的,看起来开发者很喜欢他hhh

但是在使用过程中还是暴露了很多的问题,首先是项目提供的web UI虽然在PC视图上表现非常好,但是在移动端web UI试图上却表现不佳(因为开发者没有为移动端单独适配)

另外虽然同时支持网易云音乐和QQ音乐,但是有很多有意思的音乐没有上架音乐平台(例如bilibili上的一些二创音乐和youtube上的一些音乐),为了解决以上需求,这个项目就诞生了.

##

介绍

本项目从0搓起,前端使用react native和expo框架,提供多端适配.

后端golang,网络框架(http服务和ws服务)使用fibre,

资源方面,bilibili支持使用了github.com/CuteReimu/bilibili提供的SDK,只下载音频流并用ffmpeg转成mp3,缓存并发回前端.youtube资源使用了github.com/lrstanley/go-ytdlp下载音频流,并用ffmpeg转音频流.

支持的特性

点歌

目前支持三个平台

  • 网易云音乐:支持全部的搜索特性,会自动解析分享短链接和移动端生成的分享文字

  • bilibili:只支持url和id搜索,playlist视为播放列表,不支持(也没有)album

  • youtube:只支持url和id搜索,不支持album和playlist

image-20250211182548927

image-20250211185233123

播放控制

支持暂停,跳歌.(控制效果会影响加入本音乐室的所有用户的播放器)

播放器支持自动在歌曲列表结束后暂停,在这种情况后补充歌曲的自动播放

image-20250211185749076

播放列表

在播放器页面点击左上角可以进入播放列表

可以预览已经播放和还没有播放的歌曲,暂时不支持对播放列表进行管理

image-20250211185548348

聊天

点击悬浮的绿色气泡进入聊天栏

image-20250211185859113

房间

创建房间和加入房间.

目前尚未实现修改用户名的功能,新用户会自动分配用户id

image-20250211185933719

misc和杂谈

暂时只提供http协议的服务,等笔者有精力(和钱)去申请一个证书给WSS...

暂时没有做到使用媒体按键控制播放

引用项目

https://github.com/CuteReimu/bilibili

https://github.com/lrstanley/go-ytdlp

https://github.com/gofiber/fiber

https://github.com/gofiber/websocket

https://gitlab.com/Binaryify/neteasecloudmusicapi

https://www.ffmpeg.org/

0 评论:

发表评论