多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Songloft网络歌曲与电台实操指南:透明缓存与后台离线听的完整教程

Songloft网络歌曲与电台实操指南:透明缓存与后台离线听的完整教程 Songloft网络歌曲与电台实操指南透明缓存与后台离线听的完整教程【免费下载链接】songloft 插件化、无广告的免费音乐服务器项目地址: https://gitcode.com/gh_mirrors/so/songloftSongloft 是一款插件化、无广告的免费音乐服务器除了管理本地曲库还支持添加网络歌曲与电台流并在播放时将音频透明缓存到服务端配合预取功能实现后台离线听。本文带你用最少的操作把这两项能力用起来。为什么要在Songloft里听网络歌曲和电台Songloft 的歌曲分三种类型前两种由扫描生成第三种靠你手动添加类型含义如何获得local本地音频文件扫描本地目录remote网络音频 URL / 插件音源手动添加网络歌曲radio在线广播 / 直播流手动添加电台核心卖点在于透明缓存播放网络歌曲时服务端一边把音频流转发给你一边在后台把完整文件下载下来。第二次播放直接从本地缓存返回不耗外网流量、秒开无卡顿。相关设计文档见 音频缓存与代理。一步添加网络歌曲导入任意音频直链在 Web 界面曲库页点击「添加」填入音频直链mp3/flac 等和标题即可插件音源如 Subsonic、WebDAV则由插件自动带上plugin_entry_pathsource_data入库。对应接口为POST /api/v1/songs/remote支持批量导入核心字段字段必填说明url条件音频直链插件来源留空title是标题dedup_key否去重 key重复导入同一首歌时自动合并cover_url/lyric否封面与歌词入库后服务端会异步探测时长、比特率等元数据补齐即使 WebDAV 这类无法自带时长的音源也能正常切歌。API 细节参考 歌曲 API实现位于 internal/handlers/music.go。添加电台流HLS 与常规流都支持电台走POST /api/v1/songs/radio只需两个字段url电台流地址如.m3u8或 mp3 流和title。如果 HLS 电台播放失败通常是源站防盗链或浏览器跨域CORS所致。打开设置页的HLS 代理开关即可解决服务端会拉取并改写.m3u8播放列表所有切片经本机转发播放器只与 Songloft 通信。开关对应配置项hls_proxy_enabled实现见 internal/handlers/hls.go。透明缓存怎么工作听一次永久秒开这是 Songloft 网络歌曲体验的关键。缓存流程可以概括为四步先查缓存播放时先按歌曲身份查找本地缓存文件命中则直接返回本地文件流式转发未命中时把上游音频边转发边写入临时文件播放不阻塞后台入库文件完整写入缓存目录默认{data_dir}/music_cache/删除临时文件LRU 淘汰缓存总量超过上限默认 1GB时按最后访问时间淘汰最久未听的文件。两个细节让体验更稳inflight 去重保证同一首歌并发请求只下载一次切歌不断档——你切走再切回同一首歌后台下载不会因为你取消播放而作废而是继续完成。核心代码见 internal/services/cache_service.go 与 internal/services/cache_service_song.go。缓存管理三件套在设置页的缓存管理区或通过/api/v1/cache-manage/*接口可以做三件事看统计GET /cache-manage/stats查看缓存总大小与文件数改配置PUT /cache-manage/config调整上限max_size0 为不限制与自定义缓存目录如挪到大容量 SSD还可以设置transcode_format让落盘音频统一转成 mp3 等格式一键清空POST /cache-manage/clean删除全部缓存下次播放重新下载。接口文档见 缓存管理 API。后台离线听两个预取技巧想让网络歌曲像本地文件一样随时可听用这两招1. 预热预取prefetch播放接口支持GET /songs/{id}/play?prefetch1调用后立即返回 202 并异步把整首歌拉到本地缓存。客户端切歌前调用POST /songs/{id}/activate会让旧歌的下载/转码任务让位给新歌保证带宽优先给当前要播的曲目。多听几轮歌单后常用歌曲就都本地化了。2. 移动端后台播放官方 Flutter 客户端 songloft-player 支持锁屏/通知栏媒体控制与后台播放。在手机上把常用网络歌曲预取一遍之后即使不打开 Songloft 服务端歌曲已从服务端缓存流式读取弱网下也能流畅听。常见问题速答Q缓存会不会无限占满硬盘不会。默认上限 1GB超出自动按 LRU 淘汰也可以在设置里改成不限制或自定义目录。Q电台会被缓存吗电台是直播流按流式代理处理HLS 走反代或 302不参与文件缓存真正享受透明缓存的是remote类型的网络歌曲。Q换了缓存目录旧缓存还在吗旧文件不会自动迁移切换后系统会在新目录重建 LRU 索引未命中的歌曲重新下载一次即可。小结给 Songloft 添加网络歌曲与电台只需几步填直链入库、打开 HLS 代理、配置缓存上限剩下的交给透明缓存与预取机制。本地曲库 网络歌曲 电台统一纳管这就是这套免费音乐服务器的完整听歌链路。【免费下载链接】songloft 插件化、无广告的免费音乐服务器项目地址: https://gitcode.com/gh_mirrors/so/songloft创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表