Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4248f8cc5 | ||
|
|
2de521154c | ||
|
|
e02b2fbaa7 | ||
|
|
a74eefa394 | ||
|
|
49e08e3e24 | ||
|
|
47dafdf839 | ||
|
|
394db69387 | ||
|
|
e92af5d83d | ||
|
|
78f6683ff1 | ||
|
|
eac5511e86 | ||
|
|
bede8a7a14 | ||
|
|
bc51ab8f46 | ||
|
|
3bbc259f04 |
@@ -3,14 +3,13 @@
|
||||
</p>
|
||||
|
||||
<p align="center"><strong>Entryway</strong></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">多服务器聚合管理的跨平台媒体客户端,支持 Jellyfin 和 Emby。</p>
|
||||
<p align="center">A multi-server aggregation media client for Jellyfin & Emby — Android, Android TV & Windows.</p>
|
||||
<p align="center"><a href="https://www.yamby.cn">官方网站 | Official Website</a></p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/Platform-Android-3DDC84?style=flat-square&logo=android&logoColor=white" alt="Android">
|
||||
<img src="https://img.shields.io/badge/Kotlin-2.0-7F52FF?style=flat-square&logo=kotlin&logoColor=white" alt="Kotlin">
|
||||
<img src="https://img.shields.io/badge/Jetpack_Compose-Material_3-4285F4?style=flat-square&logo=jetpackcompose&logoColor=white" alt="Compose">
|
||||
<img src="https://img.shields.io/badge/Min_SDK-27_(Android_8.1)-34A853?style=flat-square" alt="MinSDK">
|
||||
<img src="https://img.shields.io/badge/Platform-Android%20%7C%20Android_TV%20%7C%20Windows-3DDC84?style=flat-square" alt="Platform">
|
||||
<img src="https://img.shields.io/badge/Server-Jellyfin%20%7C%20Emby-AA0000?style=flat-square" alt="Server">
|
||||
<img src="https://img.shields.io/badge/License-MIT-blue?style=flat-square" alt="License">
|
||||
</p>
|
||||
|
||||
@@ -18,83 +17,90 @@
|
||||
|
||||
## 最新版本 | Latest Release
|
||||
|
||||
- **手机版 v0.17.0**:完整多弹幕 API 管理、窄屏布局修复与按服务隔离的匹配和缓存
|
||||
- **TV 版 v0.16.0**:移植多弹幕 API、重排遥控器弹窗并修复弹幕穿透菜单与焦点问题
|
||||
- **Windows v0.14.0**:提供 Windows x64 安装器、硬件解码策略与字幕/资源作用域修复
|
||||
- **手机版 APK**:[`entryway-debug-0.17.0.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/entryway-debug-0.17.0.apk)
|
||||
- **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)
|
||||
**全局标签 `v0.22.0`**(各端应用版本独立;本批次为 Debug 持续发布)
|
||||
|
||||
| 平台 | 应用版本 | 构建号 | 下载 |
|
||||
| --- | --- | --- | --- |
|
||||
| Android 手机版 | 0.22.0 | 43 | [`entryway-debug-0.22.0.apk`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.22.0/entryway-debug-0.22.0.apk) |
|
||||
| Android TV 版 | 0.18.1 | 39 | [`Entryway-tv-debug-0.18.1.apk`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.22.0/Entryway-tv-debug-0.18.1.apk) |
|
||||
| Windows x64 | 0.18.0 | 37 | [`Entryway_0.18.0+37_Windows_x64_Setup.exe`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.22.0/Entryway_0.18.0+37_Windows_x64_Setup.exe) |
|
||||
|
||||
> Android 手机版与 TV 版沿用 1.0 前的调试证书签名约定,Windows 安装包未签名;首次运行可能触发系统安全提示,需手动确认。
|
||||
>
|
||||
> ⚠️ v0.19.0 的手机安装包误用了正式发布证书,无法覆盖安装。0.18.x 及更早版本可直接覆盖安装 0.20.0;若已安装 v0.19.0,需先卸载再安装。
|
||||
|
||||
- **变更日志**:[`RELEASE_NOTES.md`](RELEASE_NOTES.md)
|
||||
- **全部版本**:[Gitea Releases](https://gitea.yamby.cn/yusheng/Entryway_Release/releases) | [GitHub Releases](https://github.com/JackYucongjia/Entryway_Release/releases)
|
||||
|
||||
## 概述 | Overview
|
||||
|
||||
**Entryway** 是一个面向自建媒体服务器用户的 Android 客户端,核心设计理念是 **多服务器聚合**——在一个统一的界面中管理和浏览你所有的 Jellyfin / Emby 服务器。
|
||||
**Entryway** 是一个面向自建媒体服务器用户的跨平台客户端,覆盖 **Android 手机**、**Android TV** 和 **Windows** 三端。核心设计理念是 **多服务器聚合**——在一个统一的界面中管理和浏览你所有的 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 a cross-platform client for self-hosted media server users, available on **Android Mobile**, **Android TV**, and **Windows**. Its core philosophy is **multi-server aggregation** — managing and browsing all your Jellyfin / Emby servers from a single, unified interface.
|
||||
|
||||
**官网**:[www.yamby.cn](https://www.yamby.cn)
|
||||
|
||||
## 核心特性 | Features
|
||||
|
||||
### 🖥️ 多服务器管理
|
||||
- 添加多个 Jellyfin / Emby 服务器,一键快速切换
|
||||
- 服务器卡片显示用户头像、用户名、服务器地址
|
||||
- 长按菜单:重新登录、服务器线路、修改图标、修改备注、设为私密、修改密码、编辑、删除
|
||||
- 溢出菜单:搜索、排序(默认/名称/最近使用)、网格/列表布局切换、显示选项
|
||||
- 私密服务器:标记后默认隐藏,需手动开启显示
|
||||
- 冷启动离线恢复:服务器不可用时不清除账号
|
||||
|
||||
### 🏠 首页即服务器
|
||||
- 首页直接展示当前活跃服务器的媒体库内容
|
||||
- 左上角显示当前服务器名,点击即可切换到其他非私密服务器
|
||||
- 支持精选轮播(Featured Carousel)和无轮播两种模式
|
||||
### 🎬 双引擎播放器(Android)
|
||||
- **ExoPlayer**:默认引擎,基于 Media3 + FFmpeg 扩展
|
||||
- **mpv**:高兼容性引擎,含 libdvdread/libdvdnav/libbluray
|
||||
- 自动容错切换,保留播放进度
|
||||
- 解码模式:SW / HW / HW+ / DV-SW
|
||||
|
||||
### 🎬 双引擎播放器
|
||||
- **ExoPlayer 引擎**:默认播放引擎,基于 Media3 + Jellyfin FFmpeg 扩展
|
||||
- **mpv 引擎**:备用高兼容性引擎,基于 libmpv,支持更多编解码格式
|
||||
- 播放失败时自动提供引擎切换建议,支持手动一键切换
|
||||
- 切换引擎时自动保持播放进度
|
||||
- 统一 User-Agent:`Entryway/{version} (android; {api})`
|
||||
### 💬 多弹幕服务
|
||||
- 弹弹Play 官方、LogVar 弹幕 API、其他弹弹Play 兼容服务
|
||||
- 按优先级有序故障回退,数据源严格隔离
|
||||
- 自动匹配、手动搜索、本地弹幕、LRU 缓存
|
||||
- 三端支持(手机 / TV / Windows)
|
||||
|
||||
### ⏩ 播放控制
|
||||
- **倍速播放**:0.1x ~ 5.0x 滑动条 + 快速预设(0.5x / 1.0x / 1.5x / 2.0x / 3.0x)
|
||||
- **长按快速倍速**:长按屏幕进入手动短时间高速播放
|
||||
- **手势控制**:左右滑动快进快退、左侧上下滑动调亮度、右侧上下滑动调音量
|
||||
- **画面比例**:循环切换适应/填充/16:9/4:3 等比例模式
|
||||
- **锁屏**:锁定控制界面,防止误触
|
||||
- **剧集导航**:上一集/下一集,播放列表(仅剧集)
|
||||
### 💿 实验性 DVD / Blu-ray ISO
|
||||
- 未加密原盘本地与远程播放
|
||||
- 不支持时自动回退服务器转码
|
||||
|
||||
### 🔧 mpv 引擎专属
|
||||
- **解码模式切换**:SW(软解)/ HW(硬解)/ HW+(硬解+拷贝)一键循环切换
|
||||
- 字体自动加载,支持字幕渲染
|
||||
### 📺 Android TV
|
||||
- 遥控器全键盘搜索、二维码手机输入
|
||||
- 完整弹幕、扫码录入服务器、首页缓存兜底
|
||||
|
||||
### 🔊 高级音频
|
||||
- Apple Spatial Audio 空间音频检测与启用
|
||||
- HDR / Dolby Vision 能力检测与自动适配
|
||||
### 🪟 Windows
|
||||
- Flutter + MediaKit (libmpv) + Rust 弹幕引擎
|
||||
- 多服务器、收藏、详情、跨服搜索、离线下载
|
||||
- Chromecast/DLNA 投屏、Inno Setup 安装器
|
||||
|
||||
### 🎨 全局主题系统
|
||||
- 支持 **跟随系统** / **浅色** / **深色** 三种主题模式
|
||||
- 基于 Material 3 动态配色方案
|
||||
|
||||
### 🌐 完整国际化
|
||||
- 界面支持中文(简体/繁体)和英文
|
||||
- 50+ 影视类型名称客户端翻译
|
||||
- 根据系统语言自动切换
|
||||
### 🎨 设计与国际化
|
||||
- 空间化 / 玻璃态视觉语言,Material 3 动态配色
|
||||
- 完整中文(简体/繁体)和英文本地化
|
||||
|
||||
### 📥 离线下载
|
||||
- 队列化下载管理,支持暂停/恢复/取消
|
||||
- 季度/剧集批量下载,下载前显示存储空间预估
|
||||
- 无网络时自动切换到离线内容模式
|
||||
- 队列化管理,批量下载,存储空间预估
|
||||
- 无网络时自动切换离线内容模式
|
||||
|
||||
## 技术栈 | Tech Stack
|
||||
## 平台要求 | Requirements
|
||||
|
||||
| 类别 | 技术 |
|
||||
|------|------|
|
||||
| **语言** | Kotlin 2.0, Coroutines, Flow |
|
||||
| **UI** | Jetpack Compose + Material 3 + Navigation Compose |
|
||||
| **网络** | Retrofit 3 + OkHttp 5 |
|
||||
| **图片** | Coil 3 |
|
||||
| **播放器** | Media3 ExoPlayer + FFmpeg 扩展 / libmpv (双引擎) |
|
||||
| **存储** | SharedPreferences + DataStore |
|
||||
| **构建** | Gradle 9.4, AGP, KSP |
|
||||
| 平台 | 最低要求 |
|
||||
| --- | --- |
|
||||
| Android 手机版 | Android 8.1 (API 27) |
|
||||
| Android TV 版 | Android 8.1 (API 27) |
|
||||
| Windows | Windows 10 x64 |
|
||||
|
||||
## 贡献 | Contributing
|
||||
## 更新检测 | Update Check
|
||||
|
||||
欢迎提交 Issue 和 Pull Request。较大的功能开发建议先开 Issue 讨论范围。
|
||||
客户端内置更新检测,优先从 Gitea 获取最新版本,连接失败时自动降级到 GitHub。
|
||||
|
||||
## 源码仓库 | Source Code
|
||||
|
||||
- **GitHub**:[github.com/JackYucongjia/Entryway](https://github.com/JackYucongjia/Entryway)
|
||||
- **Gitea**:[gitea.yamby.cn/yusheng/Entryway](https://gitea.yamby.cn/yusheng/Entryway)
|
||||
|
||||
## 许可证 | License
|
||||
|
||||
本项目基于 MIT 许可证开源。
|
||||
|
||||
手机端弹幕实现参考了 MIT 许可的 [AimesSoft/NipaPlay-Reload](https://github.com/AimesSoft/NipaPlay-Reload)。
|
||||
Windows 客户端基于 NipaPlay-Reload `v1.10.13` 构建,保留上游 MIT 许可。
|
||||
|
||||
+37
-259
@@ -1,276 +1,54 @@
|
||||
# Entryway Release Notes
|
||||
# Entryway v0.22.0
|
||||
|
||||
## 手机版 v0.17.0 / TV 版 v0.16.0 / Windows v0.14.0 - 2026-07-20
|
||||
本批次为 Android 手机版播放器与 Android Pad 适配更新,采用 Debug 持续发布规则;Android TV 和 Windows 无代码变化,沿用已验证安装包。各端应用版本独立维护:Mobile `0.22.0`、TV `0.18.1`、Windows `0.18.0+37`。
|
||||
|
||||
> 💬 **多弹幕服务与三端发布** — Android 手机和 TV 现在可按优先级配置弹弹Play、LogVar 弹幕 API 或其他弹弹Play兼容服务,匹配、加载与缓存严格绑定到实际数据源;本次 Release 同时提供 Windows x64 安装包。
|
||||
> 本批次是持续发布用的 **Debug 版本**,不是正式 Release 版本。正式版将在用户明确确认后单独构建和发布。
|
||||
|
||||
### 多弹幕 API 与共享运行时
|
||||
## 版本信息
|
||||
|
||||
- **三种服务类型**:内置弹弹Play官方服务;LogVar 弹幕 API 使用独立 URL 与 Token;“其他”按弹弹Play兼容协议调用,便于后续继续扩展服务类型。
|
||||
- **有序故障回退**:多个 API 按用户设置的优先级依次完成匹配与加载,当前服务不可用或未找到内容时再尝试下一项,不并发混用多个来源。
|
||||
- **数据源隔离**:映射、请求合并、内存状态和 LRU 内容缓存都纳入服务身份;同一 URL 的不同 LogVar Token 视为不同租户,避免跨源串用。
|
||||
- **地址规范化**:手机、TV 与运行时统一识别默认端口、尾斜杠和查询参数,防止界面允许重复端点但运行时又静默折叠。
|
||||
- **凭据保护**:Token 不进入日志、对象摘要或缓存文件名;弹幕设置排除在系统备份与设备迁移之外。
|
||||
| 平台 | 应用版本 | 构建号 | 安装包 | SHA-256 |
|
||||
| --- | --- | ---: | --- | --- |
|
||||
| Android 手机版 | 0.22.0 | 43 | `entryway-debug-0.22.0.apk` | `dee88d86fbabc3878e74065af1b164284ad1326c449cbf7f8076b140056a9fe0` |
|
||||
| Android TV 版 | 0.18.1 | 39 | `Entryway-tv-debug-0.18.1.apk`(沿用 `v0.21.1`) | `f9a7ef9f71a92df4c0469e75c1e36863062631a9735da417b7b237d54b97e4ba` |
|
||||
| Windows x64 | 0.18.0 | 37 | `Entryway_0.18.0+37_Windows_x64_Setup.exe`(沿用 `v0.21.0`) | `b744a11a186350461dc6b4143df1fd5ee833bcc0ae1df6bff4339e1824333477` |
|
||||
|
||||
### 手机版 v0.17.0
|
||||
## Android 手机版 0.22.0
|
||||
|
||||
- **完整 API 管理**:可新增、编辑、删除和调整弹幕 API 优先级,并为 LogVar 单独填写与隐藏 Token。
|
||||
- **窄屏布局修复**:多 API 摘要改为独立行并限制行数,长 URL 或备用服务数量不会再把标题和说明挤成逐字竖排。
|
||||
- **一致的端点判重**:允许同一 LogVar 根地址使用不同 Token,同时拦截规范化后实际指向同一数据源的重复配置。
|
||||
- **缓存与加载延续**:继续使用播放器缓存容量作为弹幕 LRU 上限,只有超出容量时才逐出最久未使用的内容。
|
||||
### 播放器快进/快退
|
||||
|
||||
### TV 版 v0.16.0
|
||||
- 修复中间快进、快退按钮偶发图标方向错误、数字丢失的问题。
|
||||
- 新增“快进默认时长”和“快退默认时长”,范围 1–60 秒,支持输入和拖动调整。
|
||||
- 播放器中间按钮和双击快进/快退手势使用对应设置值。
|
||||
- 移除与时长设置重复的“显示快退/快进按钮”开关。
|
||||
- 修复横向进度手势与双击快进/快退配置互相串线的问题。
|
||||
- 亮度和音量手势改为独立开关并确保实际生效。
|
||||
- 播放器顶部可选显示实时下载速度和电量。
|
||||
- 移除无效的播放/暂停按钮、安全区域、系统时间设置项。
|
||||
|
||||
- **多 API 功能移植**:通过遥控器管理服务类型、URL、Token、优先级与增删排序,实际播放与手机版共用同一匹配、回退和缓存实现。
|
||||
- **弹幕菜单重排**:菜单边距适配 720p / 1080p,长标题、状态和 API 摘要会合理分行或省略,按钮等宽排列,不再出现乱码式错位。
|
||||
- **弹层遮挡修复**:打开播放器菜单及其子对话框时暂时停止 Canvas / SurfaceView 弹幕绘制,并提高菜单表面不透明度,避免弹幕穿透覆盖菜单文字。
|
||||
- **遥控器焦点修复**:候选匹配、搜索和 API 编辑对话框互斥显示;子弹窗关闭后恢复父列表焦点,返回键可逐层退出。
|
||||
- **独立弹幕缓存**:新增 100 MB 默认弹幕缓存容量,可在 50–500 MB 范围调整,不再误改 ExoPlayer / mpv 的视频缓冲大小。
|
||||
### Android Pad 适配
|
||||
|
||||
### Windows v0.14.0+33
|
||||
- 新增 Compact、Medium、Expanded 统一窗口尺寸分类。
|
||||
- 首页、媒体库、收藏、搜索和服务器列表增加 Pad 横屏间距与卡片栅格适配。
|
||||
- 媒体卡片数量、尺寸和底部导航栏宽度随屏幕尺寸自适应。
|
||||
- 详情页和播放器沿用同一套自适应窗口规则。
|
||||
|
||||
- **Windows x64 安装包**:本次 Release 同步提供 `Entryway_0.14.0+33_Windows_x64_Setup.exe`。
|
||||
- **安装器工程**:加入 Windows 安装包构建脚本与 Inno Setup 配置,完善安装、升级与卸载流程。
|
||||
- **播放策略调整**:补充 Windows 播放内核与硬件解码策略,减少不合适的解码路径。
|
||||
- **资源与字幕修复**:修正鉴权图片、媒体详情、搜索和收藏等请求的服务器作用域,并改善串流字幕加载与播放器状态同步。
|
||||
## Android TV 0.18.1
|
||||
|
||||
### 安装包与校验
|
||||
- 本批次无代码变化,沿用 `v0.21.1` 的 Debug 安装包。
|
||||
|
||||
- 手机版:`entryway-debug-0.17.0.apk`
|
||||
- SHA-256:`e85f6d752df0b5989ecf49d2726d0e15d2c79703ce8c67c3a4ba2e90a94d31c9`
|
||||
- TV 版:`Entryway-tv-debug-0.16.0.apk`
|
||||
- SHA-256:`d4a17a314edb2dcd3f94a7bd03fef2b4724986e4d4f0a57a8ed02d1ff57bfa7e`
|
||||
- Windows x64:`Entryway_0.14.0+33_Windows_x64_Setup.exe`
|
||||
- SHA-256:`4f502ed4ea054510992bca4c5fd5c85210314cdefd8ec17c794f424551e5b8b6`
|
||||
## Windows x64 0.18.0+37
|
||||
|
||||
### 构建信息
|
||||
- 本批次无代码变化,沿用 `v0.21.0` 的 Debug 安装包。
|
||||
- 安装包未进行代码签名,SmartScreen 可能显示未知发布者提示。
|
||||
|
||||
- 手机版:`versionName 0.17.0`,`versionCode 36`
|
||||
- TV 版:`versionName 0.16.0`,`versionCode 35`
|
||||
- Windows:`version 0.14.0+33`
|
||||
## 兼容性
|
||||
|
||||
## 手机版 v0.16.0 / TV 版 v0.15.0 - 2026-07-19
|
||||
- Android 手机和 TV:Android 8.1(API 27)及以上。
|
||||
- Windows:Windows 10 或更高版本,x64。
|
||||
- Android 安装包使用项目 1.0 前的 Debug 变体和证书签名,Windows 安装包未签名。
|
||||
|
||||
> ⚡ **缓存优先、按需刷新,故障服务器不再拖垮全局** — 双端首页优先恢复按账号隔离的本地快照;进入子媒体库时只在缓存超过 30 分钟后强制获取最新数据,同时保留手动刷新能力。单个服务器不可用时,其他已保存服务器仍可正常进入。
|
||||
## 构建信息
|
||||
|
||||
### 手机版首页与媒体库
|
||||
|
||||
- **首页完整快照**:精选轮播、继续观看、下一集、我的媒体和各媒体库分区按服务器与用户隔离持久化,启动和切回首页时先显示缓存,再在后台分区更新。
|
||||
- **局部更新合并**:进入子媒体库成功刷新后,只替换首页缓存中对应媒体库的内容,并异步刷新精选轮播,不再等待整页重新获取。
|
||||
- **30 分钟子库缓存**:缓存未满 30 分钟时进入媒体库立即显示现有内容且不重复请求;超过时前台刷新,用户手动下拉可随时强制刷新。
|
||||
- **分页缓存一致性**:已加载分页会写入磁盘缓存,但不会延长首屏数据的 30 分钟新鲜度;刷新或分页失败均保留已有内容。
|
||||
- **返回位置修复**:从媒体库或详情页返回首页时恢复原有滚动位置,不再强制跳回精选轮播顶部。
|
||||
|
||||
### TV 首页与媒体库
|
||||
|
||||
- **TV 首页快照**:我的媒体、继续观看、收藏及各库最新内容使用按账号和服务器隔离的持久化快照;分区请求互不阻塞,单个媒体库超时不会清空其缓存行。
|
||||
- **TV 子库刷新策略**:与手机版一致采用 30 分钟缓存窗口;过期时前台刷新,遥控器可直接触发显式刷新,分页不会伪造新的刷新时间。
|
||||
- **遥控器位置与焦点**:返回首页保留纵向滚动状态,后台刷新不再强制抢回首项焦点;空库或首次请求失败时默认聚焦刷新按钮。
|
||||
- **跨服缓存隔离**:缓存身份同时包含账号、完整服务器地址和用户 ID,并使用稳定编码或散列生成缓存键,避免不同服务器误用同一份内容。
|
||||
|
||||
### 服务器故障恢复
|
||||
|
||||
- **冷启动不再联网验凭据**:启动时直接恢复本地会话,DNS、TLS、超时或服务端暂时不可用不会清除账号,也不会把应用锁回服务器录入页。
|
||||
- **保存账号恢复入口**:兼容旧版本已经清掉当前会话的情况;登录页可直接进入已保存账号列表,切换到其他正常服务器。
|
||||
- **失败相互隔离**:刷新失败只影响当前服务器与当前分区,缓存和其他已保存服务器继续可用;退出和删除仍保持显式、可预期的行为。
|
||||
|
||||
### APK
|
||||
|
||||
- 手机版:`entryway-debug-0.16.0.apk`
|
||||
- TV 版:`Entryway-tv-debug-0.15.0.apk`
|
||||
|
||||
### 构建信息
|
||||
|
||||
- 手机版:`versionName 0.16.0`,`versionCode 35`
|
||||
- TV 版:`versionName 0.15.0`,`versionCode 34`
|
||||
|
||||
## 手机版 v0.15.0 / TV 版 v0.14.0 - 2026-07-19
|
||||
|
||||
> 💿 **双端播放内核与 ISO 能力增强** — 手机版和 TV 版接入可解析 DVD / Blu-ray 的自构建 mpv 内核、JNI 主标题读取与本地 Range 代理;同时补齐 TV 弹幕、MPV 字幕、直链播放性能和跨端视觉统一。
|
||||
|
||||
### DVD / Blu-ray ISO 与双内核
|
||||
|
||||
- **实验性原盘 ISO 播放**:支持未加密 DVD / Blu-ray ISO。手机版可识别已下载到本机的原盘文件;手机和 TV 可对支持 HTTP Range 的远程 ISO 建立可随机读取的播放链路。
|
||||
- **原盘增强 mpv 内核**:以兼容现有 `mpv-android-lib 0.1.12` API 的自构建 AAR 替换 Maven 版本,加入 `libdvdread`、`libdvdnav`、`libudfread` 与 `libbluray`,覆盖四种 Android ABI,并保留 16 KiB 页面兼容。
|
||||
- **JNI 主标题代理**:新增原生 JNI 模块,自动选择 Blu-ray 主标题或 DVD 最长标题,再通过仅监听 `127.0.0.1`、带随机令牌的 HTTP Range 代理交给 mpv 播放。
|
||||
- **失败回退**:上游不支持 Range、原盘解析失败或检测到加密时,在用户允许服务器转码的前提下自动回退到服务器媒体流。
|
||||
- **内核路由统一**:新增共享播放内核能力模型和选择策略;原始 ISO 不再误交给 ExoPlayer,普通视频仍按用户首选内核起播。
|
||||
- **自动容错切换**:ExoPlayer 遇到不支持的封装或解码器故障时,可保留进度并单次切换至 mpv;鉴权、网络和普通 I/O 错误不会触发无意义的内核循环。
|
||||
- **安全退出与切片取消**:切集、切内核和退出播放器会中止尚未结束的 Range 探测、头尾预取及原生打开,并按安全顺序释放 mpv、代理和原盘源。
|
||||
|
||||
### 手机版播放体验
|
||||
|
||||
- **默认内核设置**:播放器设置新增 ExoPlayer / mpv 默认播放内核选择;播放器内临时切换不会覆盖默认偏好。
|
||||
- **Dolby Vision 软件回退**:mpv 硬解循环新增 `DV-SW` 模式,通过 `gpu-next` 和软件解码为部分显示异常的 Dolby Vision / HDR 文件提供会话级诊断回退。
|
||||
- **mpv 卡顿优化**:减少主线程 JNI 属性读取,改进状态缓存、轨道刷新与字幕切换调度,降低起播、拖动和切换字幕时的停顿。
|
||||
- **播放进度上报修复**:严格保证 Start、Progress、Stopped 顺序,并在退出前捕获最终位置,避免快速暂停或销毁时向服务器回报错误进度。
|
||||
- **首页过渡修复**:从当前精选背景图底缘提取环境色,使 Hero、渐隐区和下方内容共享同一背景,消除轮播与媒体分区之间的色带接缝。
|
||||
|
||||
### TV 弹幕与字幕
|
||||
|
||||
- **完整 DandanPlay 弹幕**:TV 播放器新增自动匹配、动漫搜索、剧集选择、本地弹幕、缓存与重新匹配,视频播放不再等待弹幕网络请求。
|
||||
- **遥控器弹幕设置**:新增滚动 / 顶部 / 底部弹幕、字号、透明度、速度、显示区域、时间偏移、屏蔽词、重复合并、防重叠、热力图、简繁转换及 Canvas / SurfaceView 等设置。
|
||||
- **双内核弹幕连续性**:暂停、倍速、跳转、切集以及 ExoPlayer / mpv 切换均跟随实际播放时钟,保留已匹配弹幕和设置。
|
||||
- **MPV 字幕链路补齐**:同步手机版的 CJK 字体、编码回退和 ASS 兼容配置;外挂字幕等待真实轨道出现后再选择,手动切换立即生效。
|
||||
- **原生字幕格式保留**:继续由 mpv/libass 渲染 ASS、PGS、VobSub 等格式,并改进服务器字幕索引到 mpv 轨道的精确映射。
|
||||
- **播放结束判定修复**:替换文件、停止和错误事件不再被误判为自然播放完成,避免错误跳集或重复上报。
|
||||
|
||||
### 直链、网络与兼容性
|
||||
|
||||
- **双端直链提速**:手机和 TV 统一通过带鉴权的稳定播放入口解析最终 CDN 地址,减少重复探测,并避免把服务端凭据带到外部 CDN。
|
||||
- **短效链接刷新**:切换内核或重载播放器时可刷新过期的签名直链,降低长时间停留后起播失败。
|
||||
- **子路径服务器修复**:修复 Emby / Jellyfin 部署在 `/emby` 等子路径时,服务端返回的根相对播放地址丢失前缀的问题。
|
||||
- **日志脱敏与 UA 统一**:播放探测日志不再输出完整鉴权 URL、Token 或服务端错误正文,手机和 TV 使用统一 Entryway User-Agent。
|
||||
- **更新源容错**:应用更新检查优先使用 Gitea Release,失败时回退 GitHub。
|
||||
|
||||
### 视觉与产品入口
|
||||
|
||||
- **跨端设计统一**:手机和 TV 统一语义颜色、排版、卡片、焦点环、进度色和空间层级;TV 搜索、媒体库、详情、播放器菜单等页面同步调整。
|
||||
- **TV 登录页精简**:扫码录入区域收敛为二维码与局域网扫码提示,减少无关说明。
|
||||
- **双语产品官网**:新增响应式中英文官网、下载入口、无 JavaScript 兜底、SEO / 分享元数据、无障碍规则和 NAS 部署配置;本次同步更新双端版本与下载地址。
|
||||
|
||||
### 兼容性与验证说明
|
||||
|
||||
- 不包含 `libdvdcss`、`libaacs` 或 `libbdplus`,仅支持未加密原盘。
|
||||
- 远程 ISO 的源站必须正确支持单段 HTTP Range;不支持时需开启服务器转码。
|
||||
- 未提供 DVD / Blu-ray 类型元数据的通用 ISO 不会猜测盘型,将走服务器回退链路。
|
||||
- 原盘模块已通过 Range/JNI/回退策略单元测试和双端 APK 构建;真实设备上的 DVD / Blu-ray ISO 端到端样本验证尚待完成,因此本版本仍将该能力标记为实验性。
|
||||
|
||||
### APK
|
||||
|
||||
- 手机版:`entryway-debug-0.15.0.apk`
|
||||
- TV 版:`Entryway-tv-debug-0.14.0.apk`
|
||||
|
||||
### 构建信息
|
||||
|
||||
- 手机版:`versionName 0.15.0`,`versionCode 34`
|
||||
- TV 版:`versionName 0.14.0`,`versionCode 33`
|
||||
|
||||
## 手机版 v0.14.0 / TV 版 v0.13.2 - 2026-07-11
|
||||
|
||||
> 💬 **手机版弹幕功能正式上线** — 接入 DandanPlay 弹幕匹配、加载、显示和完整设置体系,同时改善 MPV 字幕渲染与切换体验。TV 版本次无代码变更,继续提供 v0.13.2。
|
||||
|
||||
### 手机版弹幕
|
||||
|
||||
- 支持按文件哈希与文件名自动匹配,也可搜索动漫、手动选择剧集或载入本地弹幕。
|
||||
- 完整设置集中到弹幕设置页,支持行数、字号、透明度、速度、显示区域、时间偏移、关键词屏蔽、重复合并、防重叠、热力图、简繁转换及 Canvas / SurfaceView 模式。
|
||||
- 修复 SurfaceView 弹幕阻断播放器点击和手势的问题。
|
||||
- 已匹配媒体复用持久化映射,候选详情并发获取,大体积 JSON 后台解析。
|
||||
- 弹幕内容改用跟随播放器缓存上限的 LRU 缓存,仅超限时逐出,映射关系永久保留。
|
||||
|
||||
### 手机版 MPV 字幕
|
||||
|
||||
- 修复 Android 字体族配置,补充 CJK 回退、编码识别与 ASS 兼容参数。
|
||||
- 字幕切换直接写入 `sid`,后台校验状态,减少切换时的界面卡顿。
|
||||
- 保留 MPV/libass 对 ASS 特效和 PGS、VobSub 位图字幕的原生支持。
|
||||
|
||||
### APK
|
||||
|
||||
- 手机版:`entryway-debug-0.14.0.apk`
|
||||
- TV 版(本次无变更):`Entryway-tv-debug-0.13.2.apk`
|
||||
|
||||
### 构建信息
|
||||
|
||||
- 手机版:`versionName 0.14.0`,`versionCode 33`
|
||||
- TV 版:`versionName 0.13.2`,`versionCode 32`
|
||||
|
||||
## v0.8.2 - 2026-04-26
|
||||
|
||||
### 手机版更新
|
||||
|
||||
- **首页与媒体库视觉重构**:继续向 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 占用
|
||||
- 优化服务器列表管理逻辑,支持服务器显示名称自定义
|
||||
- 源码提交:`e477df2b`
|
||||
- 源码标签:`v0.22.0`
|
||||
- 自动验证:`:app:testDebugUnitTest`、`:app:assembleDebug`、官网静态页 65 项测试
|
||||
|
||||
Reference in New Issue
Block a user