Compare commits

...
6 Commits
2 changed files with 87 additions and 180 deletions
+65 -62
View File
@@ -1,9 +1,9 @@
<p align="center"> <p align="center">
<img src="entryway_logo.png" alt="Entryway Logo" width="120"> <img src="entryway_logo.png" alt="Entryway Logo" width="120">
</p> </p>
<p align="center"><strong>Entryway</strong></p> <p align="center"><strong>Entryway</strong></p>
<p align="center">多服务器聚合管理的 Android 媒体客户端,支持 Jellyfin Emby。</p> <p align="center">澶氭湇鍔″櫒鑱氬悎绠$悊鐨?Android 濯掍綋瀹㈡埛绔紝鏀寔 Jellyfin 鍜?Emby銆?/p>
<p align="center">A multi-server aggregation Android media client for Jellyfin & Emby.</p> <p align="center">A multi-server aggregation Android media client for Jellyfin & Emby.</p>
<p align="center"> <p align="center">
@@ -16,83 +16,86 @@
--- ---
## 最新版本 | Latest Release ## 鏈€鏂扮増鏈?| Latest Release
- **手机版 v0.14.0**:新增完整 DandanPlay 弹幕匹配、播放、设置和 LRU 缓存体系,并修复 MPV 字幕字体与切换卡顿问题 - **鎵嬫満鐗?v0.17.0**锛氬畬鏁村寮瑰箷 API 绠$悊銆佺獎灞忓竷灞€淇涓庢寜鏈嶅姟闅旂鐨勫尮閰嶅拰缂撳瓨
- **TV v0.13.2**:本次无 TV 功能变更,继续提供现有版本 - **TV 鐗?v0.16.0**锛氱Щ妞嶅寮瑰箷 API銆侀噸鎺掗仴鎺у櫒寮圭獥骞朵慨澶嶅脊骞曠┛閫忚彍鍗曚笌鐒︾偣闂
- **手机版 APK**[`entryway-debug-0.14.0.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.14.0/entryway-debug-0.14.0.apk) - **Windows v0.16.0**:首页横向滚动箭头、查看全部入口、下载页返回按钮
- **TV 版 APK**[`Entryway-tv-debug-0.13.2.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.14.0/Entryway-tv-debug-0.13.2.apk) - **鎵嬫満鐗?APK**锛歔`entryway-debug-0.17.0.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/entryway-debug-0.17.0.apk)
- **变更日志**[`RELEASE_NOTES.md`](RELEASE_NOTES.md) - **TV 鐗?APK**锛歔`Entryway-tv-debug-0.16.0.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/Entryway-tv-debug-0.16.0.apk)
- **Windows x64**锛歔`Entryway_0.14.0+33_Windows_x64_Setup.exe`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/Entryway_0.14.0%2B33_Windows_x64_Setup.exe)
- **鍙樻洿鏃ュ織**锛歔`RELEASE_NOTES.md`](RELEASE_NOTES.md)
## 概述 | Overview ## 姒傝堪 | Overview
**Entryway** 是一个面向自建媒体服务器用户的 Android 客户端,核心设计理念是 **多服务器聚合**——在一个统一的界面中管理和浏览你所有的 Jellyfin / Emby 服务器。 **Entryway** 鏄竴涓潰鍚戣嚜寤哄獟浣撴湇鍔″櫒鐢ㄦ埛鐨?Android 瀹㈡埛绔紝鏍稿績璁捐鐞嗗康鏄?**澶氭湇鍔″櫒鑱氬悎**鈥斺€斿湪涓€涓粺涓€鐨勭晫闈腑绠$悊鍜屾祻瑙堜綘鎵€鏈夌殑 Jellyfin / Emby 鏈嶅姟鍣ㄣ€?
Entryway is an Android client designed for self-hosted media server users. Its core philosophy is **multi-server aggregation** managing and browsing all your Jellyfin / Emby servers from a single, unified interface. Entryway is an Android client designed for self-hosted media server users. Its core philosophy is **multi-server aggregation** 鈥?managing and browsing all your Jellyfin / Emby servers from a single, unified interface.
## 核心特性 | Features ## 鏍稿績鐗规€?| Features
### 🖥️ 多服务器管理 ### 馃枼锔?澶氭湇鍔″櫒绠$悊
- 添加多个 Jellyfin / Emby 服务器,一键快速切换 - 娣诲姞澶氫釜 Jellyfin / Emby 鏈嶅姟鍣紝涓€閿揩閫熷垏鎹?
- 服务器卡片显示用户头像、用户名、服务器地址 - 鏈嶅姟鍣ㄥ崱鐗囨樉绀虹敤鎴峰ご鍍忋€佺敤鎴峰悕銆佹湇鍔″櫒鍦板潃
- 长按菜单:重新登录、服务器线路、修改图标、修改备注、设为私密、修改密码、编辑、删除 - 闀挎寜鑿滃崟锛氶噸鏂扮櫥褰曘€佹湇鍔″櫒绾胯矾銆佷慨鏀瑰浘鏍囥€佷慨鏀瑰娉ㄣ€佽涓虹瀵嗐€佷慨鏀瑰瘑鐮併€佺紪杈戙€佸垹闄?
- 溢出菜单:搜索、排序(默认/名称/最近使用)、网格/列表布局切换、显示选项 - 婧㈠嚭鑿滃崟锛氭悳绱€佹帓搴忥紙榛樿/鍚嶇О/鏈€杩戜娇鐢級銆佺綉鏍?鍒楄〃甯冨眬鍒囨崲銆佹樉绀洪€夐」
- 私密服务器:标记后默认隐藏,需手动开启显示 - 绉佸瘑鏈嶅姟鍣細鏍囪鍚庨粯璁ら殣钘忥紝闇€鎵嬪姩寮€鍚樉绀?
### 🏠 首页即服务器 ### 馃彔 棣栭〉鍗虫湇鍔″櫒
- 首页直接展示当前活跃服务器的媒体库内容 - 棣栭〉鐩存帴灞曠ず褰撳墠娲昏穬鏈嶅姟鍣ㄧ殑濯掍綋搴撳唴瀹?
- 左上角显示当前服务器名,点击即可切换到其他非私密服务器 - 宸︿笂瑙掓樉绀哄綋鍓嶆湇鍔″櫒鍚嶏紝鐐瑰嚮鍗冲彲鍒囨崲鍒板叾浠栭潪绉佸瘑鏈嶅姟鍣?
- 支持精选轮播(Featured Carousel)和无轮播两种模式 - 鏀寔绮鹃€夎疆鎾紙Featured Carousel锛夊拰鏃犺疆鎾袱绉嶆ā寮?
### 🎬 双引擎播放器 ### 馃幀 鍙屽紩鎿庢挱鏀惧櫒
- **ExoPlayer 引擎**:默认播放引擎,基于 Media3 + Jellyfin FFmpeg 扩展 - **ExoPlayer 寮曟搸**锛氶粯璁ゆ挱鏀惧紩鎿庯紝鍩轰簬 Media3 + Jellyfin FFmpeg 鎵╁睍
- **mpv 引擎**:备用高兼容性引擎,基于 libmpv,支持更多编解码格式 - **mpv 寮曟搸**锛氬鐢ㄩ珮鍏煎鎬у紩鎿庯紝鍩轰簬 libmpv锛屾敮鎸佹洿澶氱紪瑙g爜鏍煎紡
- 播放失败时自动提供引擎切换建议,支持手动一键切换 - 鎾斁澶辫触鏃惰嚜鍔ㄦ彁渚涘紩鎿庡垏鎹㈠缓璁紝鏀寔鎵嬪姩涓€閿垏鎹?
- 切换引擎时自动保持播放进度 - 鍒囨崲寮曟搸鏃惰嚜鍔ㄤ繚鎸佹挱鏀捐繘搴?
- 统一 User-Agent`Entryway/{version} (android; {api})` - 缁熶竴 User-Agent锛歚Entryway/{version} (android; {api})`
### ⏩ 播放控制 ### 鈴?鎾斁鎺у埗
- **倍速播放**0.1x ~ 5.0x 滑动条 + 快速预设(0.5x / 1.0x / 1.5x / 2.0x / 3.0x - **鍊嶉€熸挱鏀?*锛?.1x ~ 5.0x 婊戝姩鏉?+ 蹇€熼璁撅紙0.5x / 1.0x / 1.5x / 2.0x / 3.0x锛?
- **长按快速倍速**:长按屏幕进入手动短时间高速播放 - **闀挎寜蹇€熷€嶉€?*锛氶暱鎸夊睆骞曡繘鍏ユ墜鍔ㄧ煭鏃堕棿楂橀€熸挱鏀?
- **手势控制**:左右滑动快进快退、左侧上下滑动调亮度、右侧上下滑动调音量 - **鎵嬪娍鎺у埗**锛氬乏鍙虫粦鍔ㄥ揩杩涘揩閫€銆佸乏渚т笂涓嬫粦鍔ㄨ皟浜害銆佸彸渚т笂涓嬫粦鍔ㄨ皟闊抽噺
- **画面比例**:循环切换适应/填充/16:9/4:3 等比例模式 - **鐢婚潰姣斾緥**锛氬惊鐜垏鎹㈤€傚簲/濉厖/16:9/4:3 绛夋瘮渚嬫ā寮?
- **锁屏**:锁定控制界面,防止误触 - **閿佸睆**锛氶攣瀹氭帶鍒剁晫闈紝闃叉璇Е
- **剧集导航**:上一集/下一集,播放列表(仅剧集) - **鍓ч泦瀵艰埅**锛氫笂涓€闆?涓嬩竴闆嗭紝鎾斁鍒楄〃锛堜粎鍓ч泦锛?
### 🔧 mpv 引擎专属 ### 馃敡 mpv 寮曟搸涓撳睘
- **解码模式切换**:SW(软解)/ HW(硬解)/ HW+(硬解+拷贝)一键循环切换 - **瑙g爜妯″紡鍒囨崲**锛歋W锛堣蒋瑙o級/ HW锛堢‖瑙o級/ HW+锛堢‖瑙?鎷疯礉锛変竴閿惊鐜垏鎹?
- 字体自动加载,支持字幕渲染 - 瀛椾綋鑷姩鍔犺浇锛屾敮鎸佸瓧骞曟覆鏌?
### 🔊 高级音频 ### 馃攰 楂樼骇闊抽
- Apple Spatial Audio 空间音频检测与启用 - Apple Spatial Audio 绌洪棿闊抽妫€娴嬩笌鍚敤
- HDR / Dolby Vision 能力检测与自动适配 - HDR / Dolby Vision 鑳藉姏妫€娴嬩笌鑷姩閫傞厤
### 🎨 全局主题系统 ### 馃帹 鍏ㄥ眬涓婚绯荤粺
- 支持 **跟随系统** / **浅色** / **深色** 三种主题模式 - 鏀寔 **璺熼殢绯荤粺** / **娴呰壊** / **娣辫壊** 涓夌涓婚妯″紡
- 基于 Material 3 动态配色方案 - 鍩轰簬 Material 3 鍔ㄦ€侀厤鑹叉柟妗?
### 🌐 完整国际化 ### 馃寪 瀹屾暣鍥介檯鍖?
- 界面支持中文(简体/繁体)和英文 - 鐣岄潰鏀寔涓枃锛堢畝浣?绻佷綋锛夊拰鑻辨枃
- 50+ 影视类型名称客户端翻译 - 50+ 褰辫绫诲瀷鍚嶇О瀹㈡埛绔炕璇?
- 根据系统语言自动切换 - 鏍规嵁绯荤粺璇█鑷姩鍒囨崲
### 📥 离线下载 ### 馃摜 绂荤嚎涓嬭浇
- 队列化下载管理,支持暂停/恢复/取消 - 闃熷垪鍖栦笅杞界鐞嗭紝鏀寔鏆傚仠/鎭㈠/鍙栨秷
- 季度/剧集批量下载,下载前显示存储空间预估 - 瀛e害/鍓ч泦鎵归噺涓嬭浇锛屼笅杞藉墠鏄剧ず瀛樺偍绌洪棿棰勪及
- 无网络时自动切换到离线内容模式 - 鏃犵綉缁滄椂鑷姩鍒囨崲鍒扮绾垮唴瀹规ā寮?
## 技术栈 | Tech Stack ## 鎶€鏈爤 | Tech Stack
| 类别 | 技术 | | 绫诲埆 | 鎶€鏈?|
|------|------| |------|------|
| **语言** | Kotlin 2.0, Coroutines, Flow | | **璇█** | Kotlin 2.0, Coroutines, Flow |
| **UI** | Jetpack Compose + Material 3 + Navigation Compose | | **UI** | Jetpack Compose + Material 3 + Navigation Compose |
| **网络** | Retrofit 3 + OkHttp 5 | | **缃戠粶** | Retrofit 3 + OkHttp 5 |
| **图片** | Coil 3 | | **鍥剧墖** | Coil 3 |
| **播放器** | Media3 ExoPlayer + FFmpeg 扩展 / libmpv (双引擎) | | **鎾斁鍣?* | Media3 ExoPlayer + FFmpeg 鎵╁睍 / libmpv (鍙屽紩鎿? |
| **存储** | SharedPreferences + DataStore | | **瀛樺偍** | SharedPreferences + DataStore |
| **构建** | Gradle 9.4, AGP, KSP | | **鏋勫缓** | Gradle 9.4, AGP, KSP |
## 贡献 | Contributing ## 璐$尞 | Contributing
娆㈣繋鎻愪氦 Issue 鍜?Pull Request銆傝緝澶х殑鍔熻兘寮€鍙戝缓璁厛寮€ Issue 璁ㄨ鑼冨洿銆?
欢迎提交 Issue 和 Pull Request。较大的功能开发建议先开 Issue 讨论范围。
+22 -118
View File
@@ -1,130 +1,34 @@
# Entryway Release Notes # Entryway Mobile 0.18.0 / TV 0.16.1 / Windows 0.16.0+35
## 手机版 v0.14.0 / TV 版 v0.13.2 - 2026-07-11 本批次仅 Windows 端有代码更新,Android 手机版和 TV 版沿用 v0.18.0 已验证安装包。Android 为 1.0 前的 debug 构建。
> 💬 **手机版弹幕功能正式上线** — 接入 DandanPlay 弹幕匹配、加载、显示和完整设置体系,同时改善 MPV 字幕渲染与切换体验。TV 版本次无代码变更,继续提供 v0.13.2。 ## 版本与校验
### 手机版弹幕 | 平台 | 应用版本 | 构建号 | 文件名 | SHA-256 |
| --- | --- | --- | --- | --- |
| Android Mobile | 0.18.0 | 37 | entryway-debug-0.18.0.apk | `0157c126c61d79767952ed995414eb5d8a1239bb2013a2406996468356c7b820` |
| Android TV | 0.16.1 | 36 | Entryway-tv-debug-0.16.1.apk | `09d2a29d65f37cfc62c85b4fb0a7ce9a8386fac9712fb4653b0cec2f7ad69e9f` |
| Windows x64 | 0.16.0 | 35 | Entryway_0.16.0+35_Windows_x64_Setup.exe | `4f4652d5773b383291e0469c2e5a03f03cc0b25a707ebe34b02653fd958f3a14` |
- 支持按文件哈希与文件名自动匹配,也可搜索动漫、手动选择剧集或载入本地弹幕 > Android 为 debug 构建(1.0 前约定),Windows 安装包未签名;首次运行可能触发系统安全提示,需手动确认
- 完整设置集中到弹幕设置页,支持行数、字号、透明度、速度、显示区域、时间偏移、关键词屏蔽、重复合并、防重叠、热力图、简繁转换及 Canvas / SurfaceView 模式。
- 修复 SurfaceView 弹幕阻断播放器点击和手势的问题。
- 已匹配媒体复用持久化映射,候选详情并发获取,大体积 JSON 后台解析。
- 弹幕内容改用跟随播放器缓存上限的 LRU 缓存,仅超限时逐出,映射关系永久保留。
### 手机版 MPV 字幕 ## Android Mobile 0.18.0
- 修复 Android 字体族配置,补充 CJK 回退、编码识别与 ASS 兼容参数 本批次无变化,沿用 v0.18.0 的 0.18.0
- 字幕切换直接写入 `sid`,后台校验状态,减少切换时的界面卡顿。
- 保留 MPV/libass 对 ASS 特效和 PGS、VobSub 位图字幕的原生支持。
### APK ## Android TV 0.16.1
- 手机版:`entryway-debug-0.14.0.apk` 本批次无变化,沿用 v0.18.0 的 0.16.1。
- TV 版(本次无变更):`Entryway-tv-debug-0.13.2.apk`
### 构建信息 ## Windows 0.16.0
- 手机版:`versionName 0.14.0``versionCode 33` - 首页所有横向媒体行新增浮动左右滚动箭头,鼠标悬停时显示,点击可平滑横向浏览。
- TV 版:`versionName 0.13.2``versionCode 32` - "继续观看"和"我的媒体"分区新增"查看全部"入口。
- "我的媒体"查看全部改为库目录选择页,先选库再看内容。
- 子媒体库行最大条目数从 12 提升至 24,最大化窗口时可展示更多内容。
- 修复离线下载页面进入后无法退出的问题(新增返回按钮)。
## v0.8.2 - 2026-04-26 ## 已知问题
### 手机版更新 - 图形字幕(PGS/VOBSUB)在 ExoPlayer 下颜色不可调,属播放器框架限制,可切换 mpv 内核。
- Windows 安装包未签名。
- **首页与媒体库视觉重构**:继续向 Hills 风格靠拢,优化首页精选轮播、我的媒体卡片、媒体目录标题入口和列表过渡效果,减少深浅主题切换时的突兀感
- **搜索页体验重做**:将搜索页从海报轮播改为更轻量的文字推荐入口,并限制搜索结果只展示电影和剧集,避免直接展示到单集
- **概览页逻辑修复**:媒体目录概览页恢复为展示电影/剧集层级,不再直接铺开所有最终单集;同时修复浅色主题下排序/筛选弹窗未选中项文字不可见的问题
- **点击热区优化**:首页与目录概览页的影视卡片点击范围扩展到标题区域,减少只点海报才能进入详情的误操作
- **详情页与主题细节修复**:修复剧集详情页分季海报底部异常灰色阴影,并统一部分页面在浅色/深色主题下的背景与文字对比
- **GitHub 版本检查**:设置页版本信息接入 `Entryway_Release` 最新发布检测,当前版本一致时显示“已是最新版”,发现手机版 APK 更新时显示下载按钮并调用系统下载器下载
### TV 版更新
- **新增 Entryway TV 正式模块**:引入独立 `tv-app`,包名为 `com.entryway.tv`,不再复用手机版布局外壳,借鉴 OpenEmby TV 界面并引入 Entryway 内核核心
- **TV 登录与服务器录入**:首次启动支持同局域网手机扫码录入服务器,成功添加后自动进入服务器,并保留服务器切换与新增入口
- **客厅端首页与详情体验**:迁移并优化 TV 首页、媒体库、概览页、详情页与遥控器焦点效果,补充 Logo、深色模式标签对比度、继续观看标题格式和媒体库封面展示
- **TV 播放器增强**:接入 Entryway 的 Exo 播放解析链路,并在不破坏 OpenEmby 播放器 UI 的前提下接入 `MpvPlaybackEngine` 作为第二内核,补齐左右键快进快退、进度条、暂停图标、顶部 OSD、菜单呼出、音轨/字幕/内核切换等体验
- **TV 搜索页重做**:新增遥控器全键盘搜索、二维码手机输入、服务器筛选与电影/剧集结果卡片展示,并修复焦点高亮、按钮裁切和浅色文字可读性问题
- **TV 首页加载优化与缓存兜底**:首页先展示轻量媒体库列表,再异步加载前几个库和完整库内容;完整刷新成功后写入本地缓存,网络异常时优先用缓存兜底
- **TV 品牌与更新检测**:应用名、Logo、UA、`X-Emby-Client` 与版本检查均切换为 Entryway TV,并指向 `Entryway_Release` 的 TV 版 APK
### APK
- 手机版:`entryway-debug-0.8.2.apk`
- TV 版:`Entryway-tv-debug-0.8.2.apk`
### 构建信息
- `versionName`: `0.8.2`
- `versionCode`: `25`
## v0.8.1 - 2026-04-23
### 首页与服务器详情页加载优化
- **媒体库两段式加载**:首页和服务器详情页先快速展示前 6 个媒体库,随后后台异步补齐完整媒体库列表,避免首屏等待过久或后续媒体库完全不显示
- **精选轮播提速**:精选轮播不再强制等待 Logo 与背景图全部解析完成;背景图可用后即展示内容,Logo 后续加载补齐
- **轮播兜底展示优化**:当条目没有 Logo 或 Logo 加载较慢时,使用片名文字兜底,减少空白骨架停留时间
- **图片预取降噪**:收紧首页图片预取并发和首批预取数量,降低进入首页时的网络与解码竞争,让关键内容优先加载
- **精选数据轻量化**:精选轮播请求数量从 10 条缩减为 6 条,减少随机推荐和首屏图片解析成本
### 播放与调试链路收敛
- **起播诊断写盘关闭**:默认关闭 debug 包中的播放诊断文件写入,避免起播阶段产生额外 I/O
- **既有播放修复保留**:延续 v0.8.0 的 NextEmby 稳定流入口、认证参数补齐、Exo 外挂字幕修复和字幕浮窗文案修正
### 构建信息
- `versionName`: `0.8.1`
- `versionCode`: `24`
## v0.8.0 - 2026-04-23
## ▶️ 播放链路与 NextEmby 兼容性增强
- **起播请求精简**:生产环境移除额外的 `getPlaybackInfoRaw()` 诊断请求,减少起播时无意义的接口往返
- **详情快照复用**:详情页、下载页和投屏链路优先复用已有 `BaseItemDto`,显著降低播放器兜底 `getItemById()` 的触发频率
- **Emby 稳定流入口**Emby / NextEmby 播放改为优先使用稳定的 `Videos/{id}/stream` 入口,并保留认证信息,避免被服务端识别为无效身份预加载
- **熔断快速止损**:识别 `请重新登录``禁止回源``防穿透` 等 NextEmby 熔断信号后立即停止放大重试,减少短时间重复请求
## 💬 外挂字幕与播放器可用性修复
- **Exo 外挂字幕修复**:外置字幕改为优先使用标准 `Videos/.../Subtitles/.../Stream.xxx` 地址,并对 `ass/ssa/subrip` 做更稳的格式请求策略
- **mpv 外挂字幕支持**:新增 mpv 运行时外挂字幕注入,补齐此前部分 `srt/sub/ass` 无法显示的问题
- **字幕入口统一鉴权**:Exo 与 mpv 的外挂字幕链路统一补足服务端可识别的鉴权参数,避免字幕流单独失败
## 🗂️ 详情页与目录体验优化
- **媒体目录排序修复**:首页和服务器卡片进入的详情页,季列表和剧集目录会跟随用户默认排序偏好,不再退回 Emby 全局默认顺序
- **播放器浮窗文案修正**:字幕切换浮窗现在正确显示“X 个字幕”,不再误用音轨数量文案
## 🛠️ 构建与环境稳定性
- **Gradle JDK 固定**:在项目级固定 `org.gradle.java.home`,修复 Gradle 偶发误用不完整 JRE 导致的 `jlink` 构建失败
- **调试包重新发布**:本次版本升级为 `0.8.0``versionCode` 提升至 `23`
## 🎨 UI 逻辑整体重构
- **多服务器架构**:首页(Home)改为动态服务器切换器,服务器详情页(Server Detail)使用静态头部,两者职责分离
- **私有服务器支持**:新增服务器访问控制,支持标记私有服务器,元数据(`isPrivate``displayName`)通过 `upsertSavedServer()` 持久化
- **导航栏优化**:非 Home/Detail 页面强制显示底部导航栏,修复 FAB 定位和标题在浅色/深色模式下的可见性问题
## 🔗 修复 302 重定向播放问题
- **Nextemby / Redia CDN 直连播放**:全面适配 Nextemby 反向代理的 302 重定向机制,实现 STRM 文件通过 CDN 加速的直连播放
- **Auth 认证修复**:将所有 API 请求的认证前缀从 `Emby` 统一为 `MediaBrowser`,匹配 Nextemby 的拦截要求
- **PlaybackInfo 改为 POST**:使用 POST 请求 + DeviceProfile 请求体获取播放信息,与官方客户端行为一致
- **取消 URL 预探测**:移除播放前的 URL 探测逻辑,直接将流媒体 URL 传递给 ExoPlayer,由播放器自行处理 302 重定向,与 NipaPlay 等成功客户端的实现方式对齐
- **身份验证参数**:在流媒体 URL 中携带 `UserId``MediaSourceId`,确保 Nextemby 能正确识别用户身份
## 🎬 修复 4K 高码率视频播放闪退问题
- **内存溢出修复**:修正 ExoPlayer 缓冲策略,将 `prioritizeTimeOverSizeThresholds``true`(时间优先)改为 `false`(大小优先),并设置 150MB 内存缓冲上限,防止 80Mbps+ 4K 视频因缓冲过大导致 OOM 崩溃
- **协程生命周期修复**:修复播放器界面位置更新协程在 ExoPlayer 释放后仍运行导致的 `CoroutinesInternalError` 崩溃
- **CDN 连接增强**:优化 HTTP 客户端配置,增加读取超时(60s)、启用连接失败自动重试、配置连接池(4连接/5分钟保活),提升大文件流媒体播放的连接稳定性
## 📋 其他改进
- 播放器位置更新频率从 100ms 调整为 250ms,降低 CPU 占用
- 优化服务器列表管理逻辑,支持服务器显示名称自定义