Skip to content

v2.3 - CUE 虚拟分轨与流式无缝衔接

Choose a tag to compare

@Allenalonel Allenalonel released this 06 Oct 21:35
· 612 commits to main since this release

WebDavPlayer v2.3 发布说明

WebDavPlayer v2.3 专注于 CUE 虚拟分轨流内映射、无缝流式回放与文件夹闭环循环。在坚守“纯流式无本地磁盘持久化缓存”核心架构底线的前提下,为发烧友用户群体带来原汁原味的整轨无损专辑(FLAC / WAV / APE)分轨点选与绝对无缝回放体验!


🚀 核心更新亮点

1. 单物理流 + 逻辑虚拟轨(Bit-Perfect Gapless Streaming)

  • 物理流持久连接:针对整轨大音频文件(如 �lbum.flac),底层流媒体引擎始终维持单条持久化 HTTP 长连接(单一 Authenticated MediaSource),回放跨越 CUE 分轨时物理流绝对不断开、零网络重连握手、零解码器 Flush,彻底根除传统物理切片方案在纯流式下的网络缓冲间隙与爆音。
  • 虚拟时间轴映射引擎 (Virtual Timeline Engine):会话层引入高频动态双向映射,将底层大文件物理时间转换为当前虚拟分轨的相对进度(�1:23 / 04:12),Seek 范围精确约束在当前分轨区间内。
  • 跨轨零打扰元数据广播 (Non-Disruptive Metadata Enrichment):自然播放跨越分轨分界点时,响应式向 UI、通知栏及系统 MediaSession 广播更新曲目标题与表演者,实现声学级物理真无缝。

2. 纯内存 CUE 状态机解析器 (In-Memory CueParser Module)

  • 独立轻量状态机:纯 Kotlin 实现、无第三方库依赖的流式文本解析器,强力兼容双引号/无引号、多空白字符、REM 注释等常见 CUE 变种格式。
  • 高精度帧率转换:精确将 CUE 标准的 分:秒:帧(75 fps)换算为毫秒级数值(1 frame = 1000 / 75 ms)。
  • 零本地磁盘缓存:CUE 元数据仅在目录浏览与点选时瞬态驻留内存,绝不持久化落盘,严格遵守纯在线流式设计红线。

3. 待播队列与目录浏览器内联展开 (Inlined Virtual Tracks in PlaybackQueue)

  • 无缝内联展开:目录浏览与播放队列抽屉支持将包含 CUE 的整轨大音频平滑原地展开为完整分轨项,支持直观查看分轨序号、曲目标题、表演者及精确时长。
  • 流内直达起播:点击任意虚拟分轨瞬间流式起播,并支持当前播放分轨与归属大文件的动态等化器跳动指示(Equalizer Track Indicator)。
  • 统一导航抽象:扩展 PlaybackQueue 领域模型,统一管理常规音轨与虚拟分轨,保证上一曲/下一曲平滑跳转。

4. 文件夹环形闭环循环 (Folder Ring Playback)

  • 严格目录边界:播放队列范围严格锁定在当前活跃远程目录。列表循环模式下播放至末尾曲目时,自动平滑回环至首曲,坚决杜绝跨越父级或同级兄弟目录进行无休止漫游。

5. 双轨预卷流式缓冲 (Streaming Pre-roll Buffering)

  • 持久连接池复用:OkHttp 客户端保持持久化 Keep-Alive 连接池(空闲超时 5 分钟,保留空闲连接),切歌网络握手耗时降至 0ms。
  • 交叠预加载调优:配置 10 秒回退缓冲区并在曲目接近尾声时提前装填前导数据流与格式探针,普通多曲目切换零声学空白。

6. 会话现场持久化扩展与冷启动精准续播

  • 会话状态扩展:DataStore 记录当前播放的 cuePath 与分轨序号/相对偏移量。
  • 零感知无缝还原:应用冷启动时优先建立物理大音频流,静默 Seek 还原分轨相对进度。

📑 架构决策记录 (ADR)


📦 安装包文件

  • WebDavPlayer-v2.3.apk (6.59 MB) - 专注 arm64-v8a 64 位架构,内置完整 FFmpeg 软解引擎与 CUE 虚拟时间轴映射。