NASMusicTV是一个开源的 Android TV 端 NAS 音乐播放器,支持连接 Jellyfin / Navidrome 后端,播放 NAS 中的音乐。

这个项目功能非常多,所以简单挑两个特点讲一下:
首先是支持K歌模式:
在播放页点"K歌"按钮,会进入全屏沉浸 K 歌页,这时候歌词就会双行逐行滚动,以及逐字平滑变色推进,就像你们见过的其他专业K歌软件一样,词框下缘显示整曲青色进度细线,底部工具栏可以随时"原唱/伴奏"切换。
然后是人声消除(卡拉OK伴奏模式):软件可以实时 DSP 分离 Mid/Side 声道,切合人声频段深度衰减(保留 15%)而非完全挖空,Side 声道仅轻度削减(保留 50%)保住立体声宽度,这样在K 歌时背景音乐完整不塌方。
总之功能很强大,是链界觉得比较不错的一款TV端音乐播放器。
v2.38.3
Added
设置页新增「本地音乐」分区:本地音乐源总开关、已入库曲目数与重新扫描入口
Changed
效果「轨道」更名为「太阳系」
下载进度流下沉:songDownloadStates 从 AppRoot 顶层收集改为 Library / 我的 / 专辑详情 / 艺术家详情 / 天气电台五个页面分支内自行收集,下载进度更新不再驱动顶层全分支重组
瞬态消息清除改为单调版本号:连续多条提示时后一条不再被前一条的定时器提前清掉(删除、建歌单、连源、缓存清理等提示全部受益)
百度授权失败提示按结构化 FailReason 分支:英文语言环境下「拒绝授权 / 授权超时」不再退化为笼统的失败文案
浏览维度「所有」判定改为结构化 isAll 标志:选项文案本地化不再影响过滤逻辑
道理鱼时长单位启发式抽成可测纯函数(companion 成员 + 4 例单测锁定现状,待协议实证后可整体替换)
Jellyfin 年代列表改为 Filters2 端点优先、旧 Filters 端点回退,新旧两代服务器均可用
MvPersistentCache(MV 持久缓存)改为惰性加载:5000 条 JSON 不再在冷启动主线程同步读盘
MetingApiService 改用全局共享 OkHttp 线程池(16/8 并发上限),不再自建无上限线程池
K 歌伴奏缓存 LRU 淘汰在每次 HQ 分离落盘后即触发:本地歌曲反复分离不再撑爆内置存储(500MB/10 文件双上限恢复生效)
太阳系音频跟随平滑系数乘 dt:鼓点跟随速度不再随 电视帧率波动
导出文件按扩展名映射 MIME(封面 jpg / 歌词 lrc 不再被文件管理器识别为音频)
百度网盘错误提示全面资源化:OAuth 授权失败、网盘错误码(ERRNO 映射)、目录创建失败与文件索引提示改用字符串资源,切换英文语言后不再混用中文
下载与备份模块错误提示资源化:模型下载、下载任务、备份/导出失败提示改用字符串资源,随系统语言切换
网络 音乐预设源名称资源化:Meting / B 站 MV 端点预设名称改为本地化字符串,不再硬编码中文显示
本地音乐源改为总开关驱动、按需申请权限:启动不再申请存储权限;开关打开时触发系统授权,被拒自动回弹为关,运行中被撤销授权自动关闭来源
本地音乐扫描 / U 盘检测 / 聚合搜索统一受总开关控制(已下载歌曲不受开关影响、始终可见)
CI 发布签名改为 push / tag fail-fast:签名 secrets 缺失立即失败,一次性密钥回退仅保留给 PR
Fixed
修复「太阳系」中卫星转到行星后方时未被行星遮挡的问题
修复播放时长统计缺陷:切歌事件点直接读取实时进度——此前短歌被记成上一首的残留时长,且每首歌开头 30 秒完全不被记账(热力图/播放次数数据源被污染)
修复程序纹理缓存投毒:渲染器切换后同尺寸下整组全屏纹理不再被单张烘焙的记账误判跳过(星空 → 光轴等切换后背景纹理缺失 6369ms 黑屏风险);纹理仓库在效果切离时真正释放(原生产代码零调用点,全屏位图 native 常驻约 47MB 无自愈路径)
修复 MainViewModel 构造期接线解引用后声明字段:ServerViewModel 等三个子 VM 的接线区后移到全部字段声明之后,消除启动 NPE 风险(同类问题曾在 v2.37.0 引发启动崩溃)
修复 Navidrome 取消收藏失效:star/unstar 方向改为以调用方传入状态为准(对齐 Subsonic 修复版),服务器全量收藏拉取失败时不再全部误判为未收藏
修复高对比度模式整条从未生效:原掩码 0x20000 非任何 Android 标志位、恒为 false;改读系统 high_text_contrast_enabled 并监听变化实时重组
修复天气电台播放记录与收藏按合成 id 记账:时间线与心形判定剥离 nas_/nasf_ 前缀,同一首歌不再重复计数、心形不再恒空
修复取消全部下载被静默吞掉:下载完成段(封面/歌词/重命名/内嵌)补取消检查点,取消后不再被 COMPLETED 状态覆盖、不再弹「已下载」通知
修复天气 API(OWM/Open-Meteo/IP 定位)四处不检查 HTTP 状态:key 失效时日志记录 HTTP 码而非静默降级
修复通知封面切歌竞态:封面加载完成后校验当前播放项仍是发起时的歌曲才写入,通知不再残留上一首封面
修复 ≥2GiB 音频文件 ID3 标签提取失败(毫秒截断溢出导致异常被吞)
修复本地封面提取异常路径句柄泄漏(MediaMetadataRetriever 移入 finally)
修复全角专辑名与半角不被归并(合并键统一 NFKC 归一化,4 处口径一致)
修复后端初始化失败分支不登出(对称走 logout + close,防服务端 session 残留)
修复「换一批」清空跨批次推荐历史:保留种子历史与曲库缓存,已推荐歌曲不再被立即重复推荐,也不再每次重拉全量曲库
修复睡眠定时剩余分钟公式三处内联重复(收敛为统一扩展函数,与控制器时钟口径一致)
修复 K 歌模式纯展示来源标签可被 D-Pad 聚焦、首页统计卡片吸附焦点(均不再参与焦点搜索)
修复扫码输入服务回调写 Compose 状态不走主线程(与同文件 QR 生成路径统一)
修复 downloads.db 导出记录死列 size(与 srcSize 同值零读取方,v3 迁移重建表移除,迁移测试覆盖 v1→v3)
修正 WorldCities 注释「32 座」与实际 37 座不符(9-11-11-6)
修正 AGENTS.md 三处文档漂移(play-url 缓存口径、五级返回键、WorldRenderer 状态)
Removed
删除写存储与运行时通知权限声明及启动时权限申请块(媒体播放通知由平台 MediaStyle 豁免,本地 音乐权限改为总开关按需申请)
删除电池优化白名单权限声明与开机跳转(BatteryOptimizationHelper 整文件移除,后台播放策略不变)
删除 WorldRenderer(旧 2D「世界」效果,2106 行零实例化死代码;E41 由 3D WorldGlobeRenderer 承担,覆盖扫描门禁同步为 21 个渲染器类)
删除 12 项零引用死色值(ui/theme/Color.kt,仅保留在用的 Accent)
删除 SeasideWaves.Wave.reach 死字段、StarrySkyRenderer.mixColor 死方法、MoleculeRenderer 死变量
软件下载
请关注公众号,回复关键字"验证码",获取验证码。【注】微信扫描右侧二维码可以关注本站微信公众号。
本站所有资源均来自网络搜集免费分享,仅供学习参考,严禁商业盈利!
软件中的广告/弹窗/诱导等信息切勿轻信,注意鉴别,以免上当受骗!
如果您喜欢本站,可以收藏本网址,方便下次访问!
评论
发表评论
还没有评论,快来抢沙发吧~