网页电视是一款横屏Android TV播放器,主要面向电视大屏用户,提供央视频道的直播观看功能。软件支持CCTV-1至CCTV-17以及CCTV-5+,共18个CCTV HLS频道,最低支持Android 4.1(minSdk 16)。应用层使用纯Java编写,并通过ijkplayer 0.8.8进行播放,应用ID为xiao.bu.tv。
网页电视播放机制
应用启动后会在127.0.0.1创建HTTP代理,重写上游m3u8地址,并将重写后的地址交给ijkplayer。TS分片由代理下载,在ijkplayer读取前先传入JNI。频道入口地址请求最高约4 Mbps的码率,代理会从主播放列表中选择带宽最高的变体,以便大屏电视优先播放最清晰的可用视频流。
网页电视JNI层处理
JNI层会提取H.264 PES载荷,同时保留字节到TS的偏移映射。其调用顺序遵循xiaoxi-ij478/cctv-h5e-decrypt:初始化播放器状态、更新每个NAL的标签、调用选定的VOD解密器,最后执行CNTV_jsdecVOD8。解密后的NAL字节会写回原TS位置,因此直播播放期间无需重新封装。JNI层还会为每个TS分片冻结工作线程所见的时钟,使性能较低的Android TV设备也能匹配上游Worker的快速执行行为。
网页电视wasm转换
wasm载荷已通过WABT wasm2c转换为原生C代码,生成的代码位于app/src/main/jni/generated目录中。
网页电视遥控器操作
软件的遥控器交互参考WebViewTvLive,操作方式如下:
播放时按DPAD_UP或DPAD_DOWN切换频道。
按DPAD_CENTER、ENTER或MENU打开频道列表。
按BACK或MENU关闭频道列表。
五秒无操作后,频道列表自动关闭。
按MEDIA_PLAY_PAUSE暂停或继续播放。
在触屏设备上,点击视频可打开频道列表。
频道列表关闭时,两秒内连续按两次BACK退出应用。
总体来看,网页电视是一款面向Android TV的开源直播工具,聚焦央视频道播放,通过本地代理、JNI解密与wasm转换等技术手段,在低版本安卓设备上实现较为稳定的直播体验,适合需要通过电视观看央视节目的用户使用。
