来试试我做的音乐播放器吧

文章目录

    • 一、升级点
      • [1.1 更多音源](#1.1 更多音源)
      • [1.2 UI优化](#1.2 UI优化)
      • [1.3 增加WASAPI独占模式](#1.3 增加WASAPI独占模式)
      • [1.4 性能优化](#1.4 性能优化)
    • [Navidrome 简介与使用](#Navidrome 简介与使用)
      • [示例:使用预编译 `.deb` 安装包(推荐)](#示例:使用预编译 .deb 安装包(推荐))

之前做了一个音乐播放器。

9月13号,我发布了第一版,以及文章和视频,有不少朋友提了建议和批评,非常感谢。

https://mp.weixin.qq.com/s/ysRpJZx43u_ltmJw3QHCCQ

经过2个星期的打磨,现在版本已经升级到0.4.1了,我目前觉得效果还行,故再次分享出来,请大家使用和指导。

🔗地址:https://github.com/LingyunStudio/RustMusic

详细的介绍看上面之前发的文章即可,本文主要介绍一下升级/优化的内容。

最新版的视频展示:https://space.bilibili.com/434633524

本软件不提供音源,音源来自你自己的账号权益,请支持正版。技术上可以实现,但我不能做。

一、升级点

写一下主要的吧。

1.1 更多音源

  • 支持网x云、QX音源、K狗,其实后面2个是一家的:
    • 登录后,就可以导入你的歌单了,支持一键全部导入,登录后你有会员即可听VIP歌曲
    • 歌词支持逐字显示,暂时仅支持前面2个音源
    • 内置了3大音源的一些歌单,比如:热歌榜、新歌榜
    • 点击歌手名或者专辑名,可以查看该歌手/专辑的更多内容
  • 支持B站:
    • 仅播放音频,不播放视频
    • 粘贴视频url、BV号均可
    • 支持收听某一UP主的所有视频
    • 支持收藏UP主
    • UP主视频支持排序:最新、最多播放、最多收藏
    • 登录后可以播放自己的收藏夹内容
  • 支持Navidrome:
    • 即收听自己服务器上保存的歌曲
    • Navidrome教程下文写了

1.2 UI优化

  • 改成无边框的简约设计。
  • 新增了一些内置皮肤。
  • 用户可以自定义背景。

1.3 增加WASAPI独占模式

简而言之就是,软件独占一个音频输出设备,比如耳机,其它任何软件都不能再使用这个设备播放声音了。

软件独占音频输出设备,可以在一定程度上提高收听效果。

注意:

  • 输出设备支持WASAPI独占才行
  • 开启后,下一首歌曲生效
  • 关闭后立即生效
  • 开启时,其它音频、视频会无法播放,关闭独占立刻恢复

1.4 性能优化

  • 封面三级缓存:160px 列表小图 / 600px 详情图按场景加载,滚动解码内存降一个数量级
  • 大列表虚拟化渲染,DOM 与解码缓存不随曲库规模线性增长
  • 托盘隐藏即挂起 WebView 并主动裁剪工作集:788MB → 66MB 仅需约 2 秒
  • 扫描并行度受控、在线缓存防御性封顶,长时间重度使用不再只增不减

日常听歌,且软件处于前台时,内存占用约200-300MB。

软件最小化到托盘后,内存立即降低到几十MB。

浏览长歌单、浏览B站UP主的视频(大封面)的时候,内存会升高(尤其是浏览多个B站UP主的很多视频的时候),最多能到1GB左右,这个我觉得还是能接受的,而且最小化时会立即下降。

文章开头分享的视频里面全程展示了内存变化情况。


其它的就是各种bug修复了。

当然了,现在可能还有一些不完美的地方,不断改进嘛。

这里面很多优化都来自于大家的建议,这种感觉很好,感谢!

感兴趣的看看就行。

Navidrome 是开源、轻量的个人音乐服务器和网页流媒体播放器。可托管本地音乐库,用浏览器或第三方 App 随时随地听歌,相当于私有 Spotify / Apple Music。

简单来说就是:你把歌曲文件放在你的服务器上面,然后使用Navidrome 这个软件来管理,你就可以通过网页在任意设备上收听服务器上的歌曲了。

音源的话,其实你搜一下或者问下AI就行,有很多的,我不写出来咯。

核心特点:

  • Go 编写,资源占用极低,树莓派、低配 NAS、廉价云服务器均可流畅运行。
  • 兼容 Subsonic API,支持音流、DSub、Play:Sub、Amperfy 等第三方客户端。
  • 支持 Windows、macOS、Linux,常用 Docker 部署;自带现代化 Web 播放器。
  • 多用户,各自拥有播放历史、收藏、评分和歌单。
  • 自动读取音乐标签,可接入 Last.fm / Spotify 补全封面和艺术家简介。

**适用场景:**电脑或 NAS 中有大量本地音乐,尤其无损音乐,想在外用手机随时流播,又不占手机空间。Navidrome 是目前流行的个人云音乐方案之一。

在 Linux(以 Ubuntu / Debian 系为例)上安装 Navidrome,官方提供了两种主要方式,当前最新版本为 v0.64.2 。可以直接前往 Navidrome Releases 查看各架构的下载包。

官网:https://www.navidrome.org/docs/installation/linux/

GitHub:https://github.com/navidrome/navidrome/

示例:使用预编译 .deb 安装包(推荐)

使用 .deb 会由包管理器自动处理 ffmpeg 等依赖,后续维护也更方便。

(1)更新系统并准备环境

bash 复制代码
sudo apt update && sudo apt upgrade -y

(2)下载最新版本的安装包(以 64 位 x86_64 架构为例):

bash 复制代码
wget https://github.com/navidrome/navidrome/releases/download/v0.64.2/navidrome_0.64.2_linux_amd64.deb

(3)安装

推荐使用 apt 本地安装,它会自动补齐依赖:

bash 复制代码
sudo apt install ./navidrome_0.64.2_linux_amd64.deb

(4)配置音乐库路径

建议使用Navidrome 配置文件里面设置的默认路径,或者非root目录以外的路径。

查看配置文件:

bash 复制代码
sudo cat /etc/navidrome/navidrome.toml

可以看到:

bash 复制代码
DataFolder = "/var/lib/navidrome"
MusicFolder = "/opt/navidrome/music"

默认的音乐文件路径就是:/opt/navidrome/music

上传音乐文件到这个目录。

(5)给新音乐目录赋予正确的权限

bash 复制代码
sudo chown -R navidrome:navidrome /opt/navidrome/music

(6)重启 Navidrome 服务

bash 复制代码
sudo systemctl restart navidrome

(7)查看运行状态

bash 复制代码
systemctl status navidrome

成功检测到2个音乐文件。

(8)启动并设置开机自启

bash 复制代码
sudo systemctl enable --now navidrome

启动成功后,在浏览器访问 服务器ip地址:4533,首次打开会提示创建管理员账户,记一下用户名和密码。

点击界面右上角头像可以设置中文:

其实只是用Navidrome也是可以的,无论手机还是电脑,打开链接就可以播放你存在服务器里面的歌曲了。

我只是在软件里面支持了Navidrome歌曲的播放。

我不使用这个,是有朋友提了这个建议,我看了下Navidrome还不错,就添加了这个功能。


软件支持最好的是win11,win10我懒得测试了。

Linux和macos的,可以自己用AI构建一下,我没那么多精力了,反正是开源的嘛,找AI改一改很快的。

相关推荐
fundroid1 小时前
Android AI 开发,真正拉开差距的是工程闭环
android·ai·大模型·agent
蚂蚁背大象2 小时前
RocketMQ-Rust 1.0.0 发布:用 Rust 做消息队列,这次有哪些变化?
rust·开源·rocketmq
李航19832 小时前
自动动手开发图形引擎,不仅能AI建模,还能AI渲染
人工智能·python·计算机视觉·ai·ai编程
Zootopia6262 小时前
快递无人车与无人机各自进入配送网络后,路线能否一起算?
c++·人工智能·机器学习·matlab·ai·机器人·无人机
玫瑰互动GEO3 小时前
GEM优化+GEO优化+信息流三件套:AI时代投放闭环的工程化拆解
人工智能·ai·ai搜索·gem·gem优化·cpcq
全栈练习生3 小时前
大模型反向传播与梯度下降
python·ai
喵个咪3 小时前
RushWind Admin — 用 Rust 写的企业级中后台,开源了
后端·rust·开源
喵个咪3 小时前
RushWind Admin — 契约驱动:203 条路由零手写的工程化拆解
后端·rust·开源
喵个咪4 小时前
Go 写业务,Rust 扛底盘:一套可落地的混合架构
后端·rust·go