Profile
Back to NewsBack
GitHub Trending 1 min
Reader Mode
buhanzhe/NativeWasmTv: 开源网页电视

buhanzhe/NativeWasmTv: 开源网页电视

11 hours ago

nTv

English · Linux.do · 恩山论坛

内测QQ群: 1121401707 (更快的bug响应和修复包)

nTv 是一款面向 Android 电视、电视盒子、平板和手机的横屏直播播放器,重点优化遥控器操作、老旧设备兼容性和央视直播稳定性。

主要功能

  • 内置央视网、央视频等直播频道,并支持多线路自动选择。
  • 支持最高、适中、最低三档清晰度;只有一路时直接播放。
  • 提供稳定、适中、低延迟三档直播模式。
  • 使用 IJK 播放器,支持硬件解码、自动选择解码器和兼容软解。
  • 支持自适应画面比例和全屏拉伸。
  • 视频正常播完后显示“播放完成”和重播控制,切换主题使用相同播放器控件。当前视频已下载内容可通过磁盘缓存供重播复用,换台或退出时清除;缓存上限 512MiB,不预先下载整个视频。可用存储低于 400MiB、单次写入达到 250ms、连续写入低于约 1MiB/s、写入积压或磁盘错误时停止缓存,播放继续走网络。
  • 支持遥控器、触摸屏、网页遥控器和手机飞鼠。
  • 支持多标签网页、收藏栏、广告拦截和多个命名用户脚本。
  • 网页标签栏右上角可开启遮罩,隐藏网页画面并显示网址和加载状态;点击“显示网页”或按返回键恢复,网页与视频解析继续运行。
  • 网页管理 → 浏览器配置 → 显示与加载可设置“开启网页遮罩”(默认关闭)。设置保存后立即生效,新打开的网页频道自动应用;工具栏按钮和“显示网页”可临时切换,兼容旧版独立网页进程。
  • 支持接收投屏、接管会话、遥控回传及独立鼠标指针渲染。
  • 支持 M3U、M3U8、TXT 在线频道列表。
  • 可显示时间、日期、网速和播放调试信息。“播放与显示 → 显示播放进度”默认关闭,开启后在右上角显示播放位置与总时长,与时间并排;直播和纯音频不显示。网速固定在右下角,调试信息避让并可换行,网址的查询参数省略。
  • 支持开机自启动、在线更新和异常自动恢复。
  • 最低支持 Android 4.0。

公开版范围

本仓库保留播放器、浏览器、网页管理及投屏接收端。投屏发送端的画面采集、编码、RTSP 推流、后台采集服务和发送入口不在公开版中;完整发送端继续由独立私有项目维护。

公开版仍兼容接收协议与独立光标通道。拆分边界和验证方式见 接收端说明。

下载与安装

下载 APK 后直接安装即可。升级时建议直接覆盖安装,以保留频道和偏好设置。

Android 8.0 及以上系统如果阻止安装,请根据系统提示,允许当前浏览器或文件管理器“安装未知应用”。

遥控器操作

  • 上键、下键:切换频道。
  • 确认键、菜单键:打开频道列表。
  • 返回键、菜单键:关闭频道列表。
  • 播放/暂停键:暂停或继续播放。
  • 数字键:按频道序号快速切台。
  • 频道列表关闭时连续按两次返回键:退出应用。
如果习惯相反的切台方向,可在设置中开启“上下键反转”。

触摸操作

  • 点击画面左侧:打开频道列表。
  • 点击画面右侧:打开功能设置,默认界面打开网页管理。
  • 点击点播画面中间:显示播放控制器。
  • 直播画面:全屏左右滑动切换线路,左侧上下滑动调节亮度,右侧上下滑动切换频道。
  • 点播画面:左侧上下滑动调节亮度,右侧上下滑动调节音量,左右滑动预览进度,松手后跳转;取消滑动不跳转。控制器隐藏时同样可用。
  • 六套界面的分组、频道、节目单共用遥控器分页:本页末项按下进入下一页首项,首项按上返回上一页末项,列表两端停留。浏览不自动播放,OK 确认;记住各分组与节目单位置,EPG 刷新按节目时间保留选择。触摸保持自然滚动,返回遥控器后从可见条目接续。
平板或手机旋转后,视频画面会跟随设备方向调整。

网页管理

电视与手机连接到同一个局域网后,可在应用菜单中查看网页管理地址或二维码。

网页管理端可以:

  • 选择频道和线路。
  • 调整清晰度、直播稳定性和画面比例。
  • 设置时间、日期、网速及调试信息。
  • 添加或更新在线频道列表。
  • 配置开机自启动和遥控器行为。
管理端口从 9966 开始;如果端口被占用,应用会自动尝试下一个端口。请以应用实际显示的地址为准。

IPTV 节目回看

导入带回看声明的 M3U 后,在“频道列表 → 节目单”中选择标有“回看”的历史节目即可播放;遥控器 OK 和触屏点击均支持。播放器右上角“回到直播”或关闭浮层后按返回键,可返回当前频道直播。直接选择其他频道也会回到直播。

支持常见 M3U catchup 的 default(完整地址)、append(附加参数)、shift/旧 timeshift(SIPTV)、flussonic/fs、xc/xtream-codes 模式。识别 catchup-source、catchup-days、catchup-correction,并保留每条线路各自的配置。目录头部的默认属性可由频道条目覆盖。

#EXTM3U
#EXTINF:-1 tvg-id="cctv1" group-title="直播" catchup="append" catchup-days="7" catchup-source="?playseek={utc:YmdHMS}-{utcend:YmdHMS}",CCTV-1
http://your-iptv-server/channel/index.m3u8

未声明回看模板(或 default/append 未填写模板)的 HTTP/HTTPS HLS、TS 和 PLTV/TVOD 频道,可在历史节目上选择“尝试回看”:默认尝试最近 7 天,保留原鉴权参数,追加 playseek=yyyyMMddHHmmss-yyyyMMddHHmmss;明确的 /live/用户/密码/频道.ts 或 .m3u8 路径采用 Xtream 回看路径。若声明了 catchup-days 或时区修正,则沿用该值。显式模板优先,catchup="none" / catchup-days="0" 会关闭自动拼接。旧缓存无需重新导入,推断结果只作内存缓存,不增加直播请求。自动拼接只是尝试,仍需要服务商提供历史录像,部分服务端可能忽略回看参数而继续返回直播。

这是格式示例,请使用服务商实际提供的回看模板。支持 {utc}、{utcend}、{lutc}、{duration}、{duration:60}、{offset:60}、{Y}{m}{d}{H}{M}{S} 和 ${start}/${end} 等常用占位符,以及 XMLTV 节目的 {catchup-id};同时支持 DIYP 风格的 ${(b)yyyyMMddHHmmss} / ${(e)yyyyMMddHHmmss}(分别为节目开始、结束时间,Java 日期格式)。时间戳为 Unix 秒;日期格式按设备时区,catchup-correction 单位为小时。

节目单地址需在网页管理中配置,XMLTV 本身必须包含历史节目。按源声明的期限显示可回看节目(最多 30 天);节目未开始、过期、服务器未提供回看时会提示。回看切换线路或重试会保留节目,不会悄悄改播直播。普通直播不增加前置探测和下载请求。

手机飞鼠

在网页管理端进入“手机飞鼠”,开启电视光标后即可使用:

  • 陀螺仪:像遥控器一样移动或转动手机来控制光标。
  • 触控板:滑动控制光标,滑动越快移动越快。
  • 点击、返回和光标居中等快捷按钮。
首次启用陀螺仪时,请允许浏览器访问动作与方向传感器。使用完毕后可再次点击按钮关闭陀螺仪,以降低手机耗电和发热。

推荐设置

  • 直播稳定性:优先选择“稳定”。
  • 清晰度:网络和设备性能允许时选择“最高”。
  • 画面比例:优先选择“自适应”。
  • 解码方式:优先使用自动硬解;出现黑屏或花屏时尝试兼容软解。

常见问题

切台后短暂缓冲

优先使用“稳定”直播模式,或降低清晰度。应用会等待必要分片准备完成后再开始播放。

手机打不开管理网页

确认电视和手机连接到同一个局域网,并使用应用当前显示的 IP 和端口。部分路由器的访客网络会禁止设备互相访问。

陀螺仪无法开启

使用系统浏览器打开飞鼠页面,并允许动作与方向权限。部分浏览器需要安全网页环境才能提供传感器数据。

硬件解码黑屏

先尝试自动选择解码器;仍无法播放时切换到兼容软解。不同电视芯片和系统固件的解码兼容性可能不同。

手动打正式包(Windows)

双击项目根目录的 build-release.bat,即可调用 scripts/build-release.ps1,生成 ARM32、ARM64、x86 正式包并更新版本文件。打包结束后窗口会保留,方便查看成功信息或错误原因。

默认输出为 output/nTv.apk(32 位)、output/nTv64.apk(64 位)和 output/nTvX86.apk(x86),同时复制生成 网页电视32位.apk、网页电视64位.apk、网页电视x86.apk;同架构两个文件内容完全一致。更新清单使用英文名 GitHub Release 附件,上传时保留大小写,兼容已发布客户端。需要先配置 Android SDK(local.properties)和正式签名(.signing),无需管理员权限。

默认采用增量构建,避免 Windows 文件占用导致 :app:clean 失败;需要完整清理时可执行 build-release.bat -Clean。命令行也可继续传递 -SkipClean 等原脚本参数。

日常打包只在输出目录生成 version-lite.json,设备信息页优先使用它检查应用版本;若返回 HTTP 404,则读取同一发布目录的 version.json,兼容未提供轻量清单的旧版本。其他网络错误保留失败提示。只有解码器等重要更新才使用 build-release.bat -ImportantUpdate,额外生成启动检查使用的 version.json 和兼容旧版的 version-iptv.json。

说明

请仅播放您有权访问的直播内容。频道可用性、清晰度和线路数量可能随上游服务变化。

Chat with me