• yusheng released this 2026-04-26 13:22:09 +08:00 | 19 commits to main since this release

    建议升级 — 修复了 v0.12.0 上 mpv 外挂字幕仍不显示的根因(异步 sub-add 时序竞态),收敛了播放器与首页若干 UI 细节,并新增了实时下载速率显示。

    播放器修复

    • mpv 外挂字幕不显示(根因修复):v0.12.0 的修复加了显式 sid 设定但没考虑 mpv 的 sub-add异步的——命令立即返回,文件抓取在 mpv 内部派发线程上做,所以紧接着读 track-list 时新轨道还没出现,sid 总是设不上。新版改 loadPendingExternalSubtitlessuspend,加完后轮询 track-list 最多约 2 秒直到新字幕条目出现,然后才 setPropertyInt("sid", id) + sub-visibility=true。另外某些 libmpv 在 sub-add 收到尾随空字符串参数时整条命令会失败,现在根据 title / language 实际是否有内容选择 3 / 4 / 5 参数形式。
    • mpv 字幕 / 音轨命名与 ExoPlayer 一致:以前 mpv 模式下字幕列表直接显示 mpv 从容器读到的原始 title,跟 ExoPlayer 模式(用服务器 MediaStream.displayTitle / language / index 拼出来)对不上。updateMpvTrackInfo 现在把 mpv 轨道列表回查到 apiMediaStreams,按 external × order / embedded × order 匹配,统一走 subtitleTrackLabel(stream) 生成 label。

    首页与服务器切换

    • 切换服务器后内容刷新提速MediaRepository.getSessionConfig() 把 session 配置缓存 1.5 秒,导致 switchServer 之后前 1500ms 内的查询全部用旧 session 打到上一个服务器。新增 invalidateSessionCache(),在 Dashboard 检测到 dashboardSessionKey 变化时第一时间调用,让下一次媒体请求立刻按新服务器的凭证去拉。
    • "继续观看"卡片标题单行省略:之前允许两行换行,跟首页下方的子媒体库卡片不一致;现改成 maxLines = 1 + TextOverflow.Ellipsis,与下方风格统一。

    播放器 UI

    • 播放器右上角三点菜单弹窗修复:用 M3 DropdownMenu 自带的 shape / containerColor 参数代替之前的 Modifier.background(... shape = 18.dp) 写法。之前内部 Surface 用自己的默认形状画阴影、和我们涂的 18.dp 圆形对不上,浅色模式下四个角各多出一块;同时 containerColor 改用 MaterialTheme.colorScheme.surfaceContainerHighonSurface 字色,浅色模式下文字不再难以辨认。
    • 加载动画底部新增实时下载速率:缓冲 / 起播过程中可以直观区分"App 在做逻辑处理"和"播放器在拉直链数据"。ExoPlayer 侧通过自定义 TransferListener 注入到 streaming 的 DataSource.Factory 累积网络字节、500ms 轮询出差值;mpv 侧直接读 cache-speed 属性。

    APK

    • 手机版:entryway-debug-0.13.0.apk
    • TV 版:Entryway-tv-debug-0.13.0.apk

    构建信息

    • versionName: 0.13.0
    • versionCode: 30
    Downloads