Repository navigation
Releases: panhaichen-creator/LibreTV-for-HarmonyOS
Release list
v2.3.6 — 新增搜索关键字联想功能,优化播放缓冲体验,UI细节美化
下载
文件 | 说明 -- | -- LibreTV-HarmonyOS-v2.3.6-unsigned.hap | 未签名安装包(2.18 MB),需自行签名后安装 LibreTV-HarmonyOS-v2.3.6-unsigned.hap.sha256 | 文件校验值,用于确认下载完整
⚠️ 这个 HAP 没有签名,直接安装会失败。 请用你自己的证书重签,步骤见 README「📥 安装 → 方式 B:用 Release 里的 HAP 自己重签」。
SHA256:
系统要求
- HarmonyOS 6.0(API 26)及以上
- 手机 / 平板自适应,平板与大屏横屏走加宽网格;播放页支持横屏全屏
- 播放走系统
AVPlayer,不依赖 WebView,也不需要额外装解码器
本版要点
一句话:搜索框终于"输入即出",详情页和播放页补齐了同类应用该有的细节, 浅色 / 深色主题下那几条说不清的"色带"也彻底没了。
这一版相对上一份公开说明(v1.9.8)累计改动较多,按模块归并如下。
新增:搜索关键字联想(首页 + 搜索结果页)
- 打第一个字就有候选,不用等到第二个字。
联想不是拿关键字去采集站搜一遍(那要走「多源并发 + 解析 + 排序」,1
3 秒起步, 会把输入框拖死),而是走豆瓣的轻量搜索接口,通常 200600 ms 就回。
- 两个接口并行:快接口先出结果,条数不够(少于 4 条)时再用慢接口补一次。
慢接口专治"单个汉字不出结果"——快接口对「流 / 三 / 星」这类单字实测返回 0 条,
慢接口能回 8
12 条真实片名,代价是 5001000 ms,所以只用来补漏。
- 面板在输入框正下方,不再遮挡输入框:它和搜索框是同一个纵向流里的兄弟节点, 按搜索框的盒底往下排,而不是叠在输入框上面。可以边看候选边改关键字。
- 点候选直接进结果页,结果页不会再弹一次面板。进页面时代入关键字、 点候选项、点历史词这几种"程序填值"都会被识别成回填、不触发联想; 只有你在结果页输入框里真的改了字,才重新展开。
- 最多 6 条,带「电影 / 剧集」小标签和年份;防抖 220 ms(首字不防抖); 接口超时或失败就地回落本地片名池筛选,面板不会卡在"正在联想"。
详情页
- 豆瓣评分:先用采集站自带的分数占位,豆瓣结果异步到了再覆盖; 拉不到就保持源站分数,不弹提示、不阻塞页面。
- 简介折叠成 3 行,超出才给「展开 / 收起」。短简介不显示这个开关—— 它用真实可用宽度和字号量了一次行数,放得下就完全不折叠。
- 新增「下载离线观看」入口,以及「正在看 / 来自」的状态提示。
播放页:弱网自适应
- 判定分成正常 / 偏弱 / 弱网三档,网络越差,越晚才判「加载失败、该换源」。 档位只升不降,直到连续平稳播放 60 秒才回落一档—— 抖一下就把阈值永久放宽,等于把正常的换源保护也一起废了。
- 起播慢的时候给一句 「网络较慢,正在加大缓冲等待…」, 而不是让用户盯着转圈以为卡死。
- 记录每次起播耗时(诊断日志可见),方便定位是源慢还是网络慢。
首页:直播源卡片
- 收起的是一叠纸,展开才长成整块:收起态每张卡只露标题条, 下一张压住上一张一截,看得出是"一摞"。
- 频道分页渲染:有的源上千个频道,一次性铺几百行会在展开那一下卡近 1 秒, 所以先铺一屏多一点把"卡片长出来"的动画撑住,滚到底再补。
- 七套卡片配色(淡紫 / 青柠 / 石墨 / 杏橙 / 钢蓝 / 玫瑰 / 薄荷), 浅色深色各存一份资源——深色下同样的七个色相压成低饱和暗彩,比底色亮一档但不刺眼。
源管理
- 「点播源 / 直播源」的纯文字标签换成两颗圆角立体按钮: 文字点击区域原本只有十几个 vp 高,手指很难点准;现在有底色、投影和描边,按得下去。
- 底部标签栏让出一段,按钮底边不再压在手势条上,减少误触返回。
界面与性能
- 全屏底色改成纯色。原来是一段三段式竖向渐变,在 8bit 色深下 深色主题两端差 21 级,等于 21 条横向色带;深色主题里中段比两端更暗, 纵向剖面还是"亮 → 暗 → 亮"的折返。渐变是矢量绘制的,加色标救不了,只能改纯色, 层次感交回给内容卡片和玻璃条。
- 状态栏占位改成实测:不再写死 42vp。平板状态栏更高,写死会把收藏、分享那一排 压在时间与电量上;横屏系统收起状态栏时是真 0,也认这个 0。
- 瀑布流改用
LazyForEach,只创建可视区 + 缓存区内的卡片, 滑到几百条时不再掉帧。
- 导航按钮的光晕改成主题资源:浅色主题完全不画,深色主题不再出现椭圆形的边沿。
开源化
- 仓库不再携带任何签名材料:
build-profile.json5里signingConfigs为[], 签过名的机器上会被 DevEco 自动回填,提交前记得改回[]。
- 应用图标换成通用播放图标(不含任何字母)。想换成自己的:
改
scripts/make-app-icon.py顶部常量后跑python scripts/make-app-icon.py --write, 或者直接拿一张 512×512 的 PNG 覆盖AppScope/resources/base/media/app_icon.png与entry/src/main/resources/base/media/app_icon.png。
说明
- 本应用不内置任何影片内容,也不内置任何源。首次安装是空的, 需要自己添加采集站(Apple CMS V10 协议)或点应用内的一键导入。
- 联想、评分来自第三方公开接口,可能限流或失效;失败时静默回落,不影响搜索与播放。
- 内容来源与版权责任由源方及使用者自负。
v1.9.8 — 界面美化+功能优化+增加分享功能
本版要点
一句话:能分享给别人了,导片源不再硌手,浅色主题下那几条说不清的"灰带"也彻底没了。
这一版相对上一份公开说明(v1.1.8)累计改动较多,按模块归并如下。
新增:影片分享(详情页 / 播放页)
详情页操作栏和播放页顶部栏各加了一个分享按钮,走系统分享面板 (微信、碰一碰、附近设备都能选)。
- 分享的不是网页链接,而是一条
libretv://play?…深链,对方装了这个 APP, 点开就直接全屏播放,不需要再自己找片源、找集数。
- 分享卡片带影片封面:封面会先压成 30 KB 以内的缩略图再交给系统。 系统分享对缩略图有 32 KB 硬上限,超了整个面板都拉不起来,所以这里做了强制压缩。
- 对方没有同一个片源时,会按片名在自己已添加的源里找同名影片再播, 而不是直接报「链接无效」。
- 分享标题会自动带上提示:「打开后选择「在浏览器打开」播放」。
这么写是因为微信只放行白名单协议,内置浏览器不允许页面跳转
libretv://—— 这是微信平台的限制,App 侧绕不过去。按提示走「右上角 ··· → 在浏览器打开」即可自动播放。
优化:视频源管理 · 导入
- 「一键导入推荐源」点了就有反应:点击后 60ms 内按钮就变成「转圈 + 正在导入…」, 导入过程最短保留 520ms 的忙碌态,不会再出现"点了半天没动静"。 落盘也从逐个写入合并成一次批量写入,导入速度更快。
- 该按钮改成绿色,并跟着主题走: 浅色主题是深绿底 + 白字,深色主题是亮绿底 + 深字,两种主题下文字都清晰可读, 不会再出现亮绿底配浅色字、糊成一片的情况。
- 导入面板底部操作区重做:原来是一排 13fp 的纯文字,没有内边距、几乎贴着面板圆角,
手指很难点中。现在是两行 44vp 的胶囊按钮:
第一行 | 从地址导入(主色) · 从粘贴内容导入
-- | --
第二行 | 扫码导入 · 从本地文件导入 · 关闭
面板底部也加厚了留白,按钮不再压在圆角上。 |
环境要求
- HarmonyOS NEXT / OpenHarmony,API 26 及以上
- 应用不内置任何片源,首次使用需自行在「我的 → 视频源管理」添加点播源(Apple CMS V10) 与直播源(M3U / TXT),或使用「一键导入推荐源」
已知限制
- 微信内点击分享链接无法直接唤起 App(微信只放行白名单协议), 需按提示「右上角 ··· → 在浏览器打开」。
- 分享卡片里的封面来自 App 侧压缩后的缩略图;如需在微信里显示大图卡片, 需要服务端按影片动态渲染分享页,静态托管做不到「一影片一封面」。
v1.1.7 — 画中画功能新增和各种优化BUG修复
下载
文件 | 说明 -- | -- LibreTV-HarmonyOS-v1.1.7-unsigned.hap | 未签名安装包(2.11 MB),需自行签名后安装 LibreTV-HarmonyOS-v1.1.7-unsigned.hap.sha256 | 文件校验值,用于确认下载完整小窗里本来就是暂停状态下还原的,不会被强行播起来。
修复:再次进入播放页会卡住、换台换不动
症状有两种,其实是同一个原因:
- 点播或直播播过一段、返回上一级,再点播放:出现竖屏界面,画面卡住不动, 中间挂着暂停按钮,点它没反应
- 直播里返回频道列表后点任何频道,播的还是最早那一路(黑屏 + 一直转圈)
原因是页面跳转框架会把"刚离开的页面"缓存着复用:再次进入同一个页面时, 拿到的是上一次那个已经停掉的页面,而不是全新的一页。于是:
- 页面里记着"我已经播放过了",起播流程被自己拦下 → 一直转圈
- 页面里记着"当前播的是 CCTV2",列表点什么都还是 CCTV2
- 页面里记着"已经横屏了",这次就不会再切横屏 → 停在竖屏
- 播放器早已释放,暂停按钮自然点了也没反应
现在每次页面重新显示,都会重新读取这次要播的内容、把状态清零、 把画面重新接回播放器再起播。
顺带修掉同一原因引起的其它串台:从一部影片退出再进另一部,详情页可能显示的 还是上一部;换个关键词搜索,结果还是上一次的;「播放历史」与「我的收藏」互相串。
修复:续播进度会被清零
返回详情页后,那部片子的"看到 12:34"变成了"从头开始"。 原因是离开播放页时会保存两次进度:第一次拿到的是真实位置, 第二次播放器已经释放、位置读出来是 0,把刚存好的覆盖掉了。现在只认真实位置。
修复:播放页调过亮度后,系统亮度调节失灵
在播放页左侧上下滑动调过亮度之后,回到列表页面,控制中心里调亮度会一直没反应。 原因是这个亮度设置作用在整个窗口上,离开播放页时没有当场还原。 现在返回的那一刻就还给系统。
修复:首页横滑会误弹「已到顶部」
首页顶部的观看历史是横向滑动的。滑到最右边时手往回一收,手指会自然往下带一点, 被误判成"下拉",于是弹出「已到顶部」的提示。现在只有竖直方向的位移明显大于横向 (约 58° 以上)才算下拉。
环境要求
- HarmonyOS NEXT / OpenHarmony,API 26 及以上
- 应用不内置任何片源,首次使用需自行在「我的 → 视频源管理」添加点播源(Apple CMS V10)与直播源(M3U / TXT)
已知问题
- 只支持 Apple CMS V10 点播接口与 M3U/TXT 直播订阅;TVBox 的
type:3蜘蛛源不能当点播源使用
- 自动换源依赖「同名影片能搜到」:标题带季集号、译名差异较大时可能找不到备用源, 此时会退回手动换源提示
- 离线缓存是把 HLS 分片按字节拼接成单个
.ts。若源站各分片的时间戳不连续, 个别影片仍可能在中途出现一次短暂停顿(本地自愈会尝试重新同步,但不保证一定成功)。 这类片源建议在线观看
- 画中画依赖系统能力,个别定制 ROM 上若被系统策略禁用,会自动退回「退后台即暂停」的旧行为
- 网盘 / 磁力播放尚未实现
校验下载完整性
输出应与上面的 SHA256 完全一致。
v1.0.9 — 自动切换源体验优化 + 离线播放音画不同步修复
下载
文件 | 说明 -- | -- LibreTV-HarmonyOS-v1.0.9-unsigned.hap | 未签名安装包(2.03 MB),需自行签名后安装 LibreTV-HarmonyOS-v1.0.9-unsigned.hap.sha256 | 文件校验值,用于确认下载完整横向滑满一屏对应 5 分钟,越靠近两端越精细。
说明:控制条显示时长按不会触发加速 —— 那一层压着播放/暂停、进度条、选集等按钮, 长按手势若抢事件,这些按钮会点不动。轻点一下画面收起控制条即可使用。
顺带修了一个连带问题:向后拖动进度条后,卡顿计数会被误判。 seek 之后「最近进度」还停在旧的高位上,进度要追很久才超过它,这段空窗会被 「卡顿判定」当成长时间卡住,进而自作主张换源。现在 seek 后会重置判定基准。
修复:离线播放「画面冻住、声音正常」
症状是离线缓存播放一段时间后画面不动了,但声音还在响,拖一下进度条才恢复。
根因在把本地文件喂给播放器的那个回环 HTTP 服务:
- 播放器断开连接后,服务端还在继续推。 每次 seek / 换集 / 重建播放器, 播放器都会关掉旧连接。旧实现不感知断开,会对着一个已经死掉的 socket 把整个缓存文件(几百 MB)从头到尾"推"一遍。
- 读文件用的是同步 IO(
fs.readSync/fs.openSync),跑在主线程上。 叠加第 1 点,主线程被大量无意义的同步读写占住 —— 画面渲染拿不到帧, 而音频走的是另一条渲染链路,于是「声音正常、画面冻住」。
- 连续
await只在微任务队列里打转,事件循环里排队的渲染帧和触摸事件 一直轮不到执行,观感就是卡死。
改法:
- 监听连接
close立即停止推流;send失败也当场中止,不再静默空转。
- 全程改用异步
fs.open/fs.read,主线程不再被磁盘 IO 按住。
- 分块从 256 KB 降到 128 KB,且每 8 块让出一次宏任务,给渲染帧留出执行窗口。
- 播放器侧补上
BUFFERING_START/BUFFERING_END事件处理(此前只处理了百分比)。
- 另加一层自愈:离线播放时若「缓冲开始」后 4 秒仍未结束,就以当前位置做一次
精确定位(
SEEK_CLOSEST,不会往回跳到关键帧)强制解码器重新出帧 —— 等同于用户手动拖一下进度条,最多 5 次。
版本号
自动递增已生效:1.0.8 → 1.0.9(versionCode 1100004 → 1100005)。
环境要求
- HarmonyOS NEXT / OpenHarmony,API 26 及以上
- 应用不内置任何片源,首次使用需自行在「我的 → 视频源管理」添加点播源(Apple CMS V10)与直播源(M3U / TXT)
已知问题
- 只支持 Apple CMS V10 点播接口与 M3U/TXT 直播订阅;TVBox 的
type:3蜘蛛源不能当点播源使用
- 自动换源依赖「同名影片能搜到」:标题带季集号、译名差异较大时可能找不到备用源, 此时会退回手动换源提示
- 离线缓存是把 HLS 分片按字节拼接成单个
.ts。若源站各分片的时间戳不连续, 个别影片仍可能在中途出现一次短暂停顿(本地自愈会尝试重新同步,但不保证一定成功)。 这类片源建议在线观看
- 网盘 / 磁力播放尚未实现
校验下载完整性
输出应与上面的 SHA256 完全一致。
v1.0.8 — 点播卡顿时自动切换源 + 多次直播失败自动返回频道列表
下载
文件 | 说明 -- | -- LibreTV-HarmonyOS-v1.0.8-unsigned.hap | 未签名安装包(1.99 MB),需自行签名后安装 LibreTV-HarmonyOS-v1.0.8-unsigned.hap.sha256 | 文件校验值,用于确认下载完整
⚠️ 这个 HAP 没有签名,直接安装会失败。 请用你自己的证书重签,步骤见 README「📥 安装 → 方式 B:用 Release 里的 HAP 自己重签」。
SHA256:
本版要点
新增
- 点播自动换源:起播超过 12 秒没有画面,或同一集累计卡顿 3 次以上, 自动切换到「延时最小的其他点播源」,并从当前播放进度继续,不用手动换源。 多源测速复用现有能力:并发探测最多 8 个源,按首个分片的响应延迟升序挑选。
- 直播自动退回:频道播放失败后,用户连续点两次「重试」仍起不来, 自动退回频道列表并提示「该频道当前不可用,请尝试其他频道」, 不再让人对着错误弹窗反复点第三次。
修复
- 画面刚恢复就被换源:测速要花几秒,这段时间里画面可能已经正常了, 旧逻辑仍会照切。现在切换前会复查播放进度,近 2 秒内有进度就放弃本次换源。
- 卡顿计数不会清零:一次播放里零散卡三次(可能横跨一小时)也会被判成「反复卡顿」。 现在平稳播放满 60 秒即清零,只认真实持续的卡顿。
- 版本号自动递增未进包:此前递增逻辑排在
PreBuild之前执行, 但 hvigor 启动阶段已经把app.json5读进内存,导致磁盘上版本号变了、 HAP 里还是旧值。现在改为在 hvigor 加载构建配置之前完成递增。
文档
- 新增 GitHub Desktop 上传指南(零基础,含脱敏自查清单)
环境要求
- HarmonyOS NEXT / OpenHarmony,API 26 及以上
- 应用不内置任何片源,首次使用需自行在「我的 → 视频源管理」添加点播源(Apple CMS V10)与直播源(M3U / TXT)
已知问题
- 只支持 Apple CMS V10 点播接口与 M3U/TXT 直播订阅;TVBox 的
type:3蜘蛛源不能当点播源使用
- 自动换源依赖「同名影片能搜到」:标题带季集号、译名差异较大时可能找不到备用源, 此时会退回手动换源提示
- 网盘 / 磁力播放尚未实现
校验下载完整性
输出应与上面的 SHA256 完全一致。
完整更新记录:见仓库顶部的 Commits 页面。
v1.0.6 — 版本号自动更迭 + 直播页修复
下载
文件 | 说明 -- | -- LibreTV-HarmonyOS-v1.0.6-unsigned.hap | 未签名安装包(1.98 MB),需自行签名后安装 LibreTV-HarmonyOS-v1.0.6-unsigned.hap.sha256 | 文件校验值,用于确认下载完整
⚠️ 这个 HAP 没有签名,直接安装会失败。 请用你自己的证书重签,步骤见 README「📥 安装 → 方式 B:用 Release 里的 HAP 自己重签」。
SHA256:
本版要点
新增
- 版本号自动更迭:打包前自动检查源码是否改动,改动则版本号 +0.01; 同一份代码重复打包不会虚增版本
- 直播播放页新增「铺满屏 / 适应屏」切换,与点播页行为一致
修复
- 直播正常播放时,画面中央仍出现「缓冲中」和转圈动画 (判据由「缓冲进度未满」改为「播放进度是否停摆」)
- 「我的」页「关于」右侧版本号与「关于」页不一致 (改为运行时读取包信息,不再硬编码)
环境要求
- HarmonyOS NEXT / OpenHarmony,API 26 及以上
- 应用不内置任何片源,首次使用需自行在「我的 → 视频源管理」添加点播源(Apple CMS V10)与直播源(M3U / TXT)
已知问题
- 只支持 Apple CMS V10 点播接口与 M3U/TXT 直播订阅;TVBox 的
type:3蜘蛛源不能当点播源使用
- 部分采集站的
ac=videolist&ids=会忽略 id 返回最新列表,表现为点不同影片播同一部(已做vod_id校验,若仍遇到请反馈具体源)
- 网盘 / 磁力播放尚未实现
校验下载完整性
输出应与上面的 SHA256 完全一致。