视频加载失败

ElderTV 1.0.3:第三方源能用了,直播回来了

2267 字
11 分钟
ElderTV 1.0.3:第三方源能用了,直播回来了
  1. 1ElderTV 1.0.3:第三方源能用了,直播回来了本文
ElderTV 1.0.3:第三方源能用了,直播回来了

1.0.0 发布后,我在电视上换了一个网上常见的第三方 TVBox 源试用,结果整个应用基本不能用:搜什么都是空的,首页没有推荐,找片页也没有“按分类看”。

这一版主要修的就是这个问题,顺带加回了电视直播,以及播放时显示时间、进度和网速的功能。下面的截图都来自同一台雷鸟电视(Android 11),是真机测试时截的。

eldertv-103-home
eldertv-103-home

首页右上多了一块“看电视直播”。

第三方源为什么不能用#

eldertv-103-search-empty
eldertv-103-search-empty

用那个第三方源搜“战狼2”,结果页是空的。排查下来是三个问题叠在了一起。

第一,安全规则把 189 个站拦掉了。 这个源一共 192 个站:133 个依赖同一个 jar 插件,31 个是 js 脚本,25 个是 py 脚本,真正不需要代码的采集站只有 2 个。ElderTV 对第三方代码有一道安全检查:jar 里只要出现“结束进程”的调用,就整包拒绝;py 和 js 因为还没有检查规则,一律不运行。最后能跑的只剩 3 个站。

我把那个 jar 反编译看了一下。整个 5MB 的包里,“结束进程”只出现在一个地方:某个站点在重启应用后结束自己的进程。它和那种“发现包名不对就强制退出”的写法不一样。插件本来就跑在单独的进程里,它结束的只是自己所在的那个进程。

所以这一版换了做法:不再看到这个调用就拒绝整个 jar,而是在插件进程上加一道系统级限制,让它的信号只能发给自己,碰不到应用主进程。这样 133 个站恢复了。代价也要说清楚:之前有一个被杀毒软件报过的 jar,当时就是靠这条规则拦下的,现在它能进插件进程运行,只靠这道系统限制兜底。插件进程不能执行外部程序,不能加载本地库,也碰不到主进程,但能联网。

第二,插件进程崩溃一次后,再也起不来。 系统日志显示,插件进程崩溃后被电视固件挂在“等待重启”的状态,计划的重启时间早就过了,却一直没有重启。应用这边一直在等它,每次调用都要白等 15 秒才放弃。现在改成:发现插件进程挂了,就主动重新拉起。我在电视上手动让它崩溃了一次,下一次搜索时 0.05 秒就重新连上了。

第三,有些站还没开始搜就被判超时。 搜索给每个站 30 秒,但这个时间是从任务排进队列就开始算的。搜索线程只有 8 个,前面的站占着线程,排在后面的站还没轮到就超时了,一次搜索里有 19 个站是这种情况。更麻烦的是,这些站会被记成“搜索失败”,失败多了还会被自动停用。现在改成从站点真正开始搜索时才计时,没轮到的站也不再记作失败。

eldertv-103-search-ok
eldertv-103-search-ok

修完后,同一个源搜“战狼2”能出 6 个源,选第一个可以正常播放。

还有一个体验问题:搜不到结果时,页面以前一直是空白,看不出是还在搜还是已经搜完了。现在标题会显示进度,搜完还没有结果时,会说明有多少个站被安全规则拦掉了。

eldertv-103-search-progress
eldertv-103-search-progress

eldertv-103-search-blocked
eldertv-103-search-blocked

163 个可搜索的站里有 54 个被拦,正好是 py 和 js 站的数量。

首页的问题也一起处理了:这个源的首页站是一个 py 站,被拦后首页没有内容,找片页也就没有分类。现在首页站被拦时,会临时换一个能用的站,只在本次运行有效,不改你保存的设置。

两处界面问题#

找片页按上键到不了“按分类看”。 光标在“电视榜”上按上,如果没有搜索记录,按键会被吞掉,到不了上面的分类。现在按上会依次到分类、再到搜索记录。

eldertv-103-categories
eldertv-103-categories

详情页排版。 演员一栏有两行时,第二行会被“播放”“简介”这排按钮压住;选集第二行被切掉一截,下面却空着一大块。

eldertv-103-detail-before
eldertv-103-detail-before

原因是选集区的高度是写死的:每行按 40dp 算,实际按钮有 43dp;而且屏幕高度不到 560dp 就只给 2 行,1080p 电视正好是 540dp,被当成了小屏。现在改成按实际按钮高度和剩余空间计算行数,演员改成一行,放不下的部分在“简介”里看。

eldertv-103-detail-after
eldertv-103-detail-after

电视直播#

1.0.0 删掉了直播,这一版加了回来,做法是直接打开央视频官网的直播页。

eldertv-103-live
eldertv-103-live

这部分参考了开源项目 WebViewTvLive 的思路:一个频道可以有多个来源,每个网站写一个小适配器,共用一份页面脚本,脚本负责把视频铺满屏幕、上报播放状态。它的源码没有许可证,作者也不允许二次分发,所以这里只借鉴了设计,代码是我们自己写的,基础是之前单独做的那个央视频直播应用。

eldertv-103-live-list
eldertv-103-live-list

按 OK 键打开频道列表,共 51 个台,每个台都显示正在播的节目。上下键换台时,是在页面内部切换,不重新加载整页。

eldertv-103-live-switch
eldertv-103-live-switch

换台期间会显示台号、台名和网速。实测换台 11 到 13 秒出画面,第一次进入要 17 到 20 秒。右键切换清晰度,实测能在 720 和 1080 之间切。

设置里新增了“开机进入”,可以选点播或直播,默认是点播。选直播后,从桌面打开应用会直接进入直播,按返回键回到首页。

播放时显示信息#

设置里新增“播放时显示”,可以勾选当前时间、播放进度、网速,默认全部关闭。

eldertv-103-osd-vod
eldertv-103-osd-vod

点播时,左下角显示“已播 / 总长”和剩余时间,右上角是时间,右下角是网速。

eldertv-103-osd-live
eldertv-103-osd-live

直播没有进度,只显示时间和网速。不过直播的网速目前一直是 0,原因见下面的剩余问题。

剩余问题和进度#

问题现状下一步
配置里的直播源(m3u / txt)读取、解析、合并、播放都已经写好,单测通过;但测试用的源里 5 个直播列表全部失效(2 个被 gitee 拒绝、2 个连不上、1 个跳转后是空内容),电视上没有验证过换一个能用的直播列表实测
聚合模式下没有直播源聚合生成的配置不带 lives,只能看央视频聚合时保留 lives 的地址,写进聚合结果,约 1 到 2 小时
直播网速显示 0点播网速正常,推测网页播放的流量不计在应用名下网页直播先不显示网速
切换清晰度后约 3 秒灰色占位第 6 秒恢复正常切换时先盖上黑色遮罩
直播换台 11 到 13 秒官网页面本身就慢,之前没有可对比的数据增加“直播优先用:央视频 / 直播源”选项,并记住每个台上次能播的来源
py / js 站点仍不能运行一个源里经常占三成把 py / js 也放进插件进程里运行,约 1 到 2 天
“播放时显示”的选择窗口是旧样式白底,和深色界面不统一改成和设置页一致

eldertv-103-quality-grey
eldertv-103-quality-grey

上图就是切换清晰度时出现的灰色占位。

下载#

最低要求:安卓 7.0(Android 7.0)及以上,32 位 ARM(armeabi-v7a)。大多数电视和盒子都满足,安卓 7.0 以下的老设备装不上。

复制到浏览器打开,前两个是中转地址,国内一般能直接下:

线路一: https://ghfast.top/https://github.com/riowang88/ElderTV/releases/download/v1.0.3/ElderTV-1.0.3-armeabi-v7a.apk

线路二: https://gh-proxy.com/https://github.com/riowang88/ElderTV/releases/download/v1.0.3/ElderTV-1.0.3-armeabi-v7a.apk

GitHub 原地址: https://github.com/riowang88/ElderTV/releases/tag/v1.0.3

中转站是第三方的,不归我管,一条打不开就换另一条。安装包约 99MB。

装法:

  1. 下载 APK,拷到 U 盘,插到电视上
  2. 用电视的文件管理器打开,提示未知来源就去设置里允许
  3. 装好后在“设置 → 高级设置 → 配置地址”填片源地址,或者打开聚合

已经装了 1.0.0 的,直接覆盖安装,观看记录会保留。

ElderTV 不内置任何片源,地址需要自己填。

ElderTV 按 GPL-3.0 发布,对应的源码压缩包在 GitHub 原地址的 Release 页面里。

到目前为止,ElderTV 只在这一台雷鸟电视上测试过。其他电视能不能正常用,还没有数据。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

ElderTV 1.0.3:第三方源能用了,直播回来了
https://wtblog.wang/posts/02-eldertv-1-0/
作者
Riowang
发布于
2026-11-04
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Riowang
折腾 NAS 和家里的电视。
公告
博客已迁移到新主题,ElderTV 的版本说明和教程都放在「ElderTV」分类。
分类
标签
站点统计
文章
35
分类
7
标签
9
总字数
57,599
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Cloudflare Workers
博客版本
Firefly v6.16.9
文章许可
CC BY-NC-SA 4.0
文章目录