内置 Web 播放器
rtp2httpd 内置了一个基于 Web 的现代化播放器,可以直接在浏览器中观看已配置的 M3U 频道列表,无需安装任何客户端。
访问方式
配置好 M3U 播放列表后,通过浏览器访问:
http://服务器地址:端口/player示例:
http://192.168.1.1:5140/player播放器页面路径可以通过配置项 player-page-path 自定义。设置为 / 可以实现不带任何路径直接访问。
功能特性
- 频道列表:自动加载配置的 M3U 频道列表
- 在线直播:在浏览器中直接观看直播
- 时移回看:支持 EPG 电子节目单和时移回看(需要有回看源)
- 快速起播:搭配 FCC 可实现毫秒级换台速度
- 响应式设计:桌面和移动端 UI 自适应
- 零开销:纯 Web 前端实现,对 rtp2httpd 运行几乎没有资源占用(无解码转码开销)
IMPORTANT
播放器依赖浏览器的原生解码能力,部分编码格式(如 E-AC3)可能在某些浏览器中无法播放(表现为无音频、画面黑屏)。推荐使用最新版本的 Chrome、Edge 或 Safari。
MP2 音频软解
IPTV 大多数高清、标清频道使用 MPEG-1 Layer 2 (MP2) 音频编码,一些浏览器(例如 iOS Safari)无法原生支持 MP2 解码,导致节目无法播放,或者只有画面没有音频。
播放器内置了 MP2 音频软解能力:
- iOS Safari:默认启用,经测试大多数节目已经可以正常播放
- 其他浏览器:默认关闭,可以点击侧边栏设置按钮手动启用「MP2 音频软解」选项
NOTE
音频软解依赖于浏览器 Web Worker 和 WebAssembly 在后台解码,会占用一些计算资源,在手机上可能会产生轻微发热,这是正常现象。此外,受限于浏览器,使用软解时在手机上无法保持后台播放。
频道聚合
当 M3U 中存在多个同组同名的频道时,播放器会自动将它们聚合为一个频道的多个源,在频道列表中只显示一次。用户可以通过线路选择器切换不同线路(如不同清晰度):

如果源 URL 带有 $标签 后缀,播放器会将其提取为源的显示标签(如「超高清」「高清」「标清」)。没有 $标签 的源则按序号显示(如「线路 1」「线路 2」)。
NOTE
频道聚合是 内置 Web 播放器 的前端功能,并非 rtp2httpd 服务端行为。第三方播放器(如 APTV、TiviMate 等)是否支持类似的聚合显示取决于其自身实现。rtp2httpd 服务端仅负责解析 $标签、生成独立的服务路径,以及在转换后的 M3U 中保留 $标签。
关于线路标签的 M3U 配置方式,详见 M3U 播放列表集成。
时间占位符
内置 Web 播放器支持以下时间占位符格式,可在 M3U catchup-source URL 中使用:
${} 格式(使用 long format)
| 占位符 | 说明 | 示例输出 |
|---|---|---|
${utc} | 节目开始时间(UTC,ISO8601 格式) | 2025-01-15T10:30:45.000Z |
${utc:yyyyMMddHHmmss} | 节目开始时间(UTC,自定义 long format) | 20250115103045 |
${utcend} | 节目结束时间(UTC,ISO8601 格式) | 2025-01-15T12:30:45.000Z |
${utcend:yyyyMMddHHmmss} | 节目结束时间(UTC,自定义 long format) | 20250115123045 |
${start} | 同 ${utc} | 2025-01-15T10:30:45.000Z |
${start:yyyyMMddHHmmss} | 同 ${utc:yyyyMMddHHmmss} | 20250115103045 |
${end} | 同 ${utcend} | 2025-01-15T12:30:45.000Z |
${end:yyyyMMddHHmmss} | 同 ${utcend:yyyyMMddHHmmss} | 20250115123045 |
${lutc} | 当前时间(UTC,ISO8601 格式) | 2025-01-15T14:00:00.000Z |
${lutc:yyyyMMddHHmmss} | 当前时间(UTC,自定义 long format) | 20250115140000 |
${now} | 同 ${lutc} | 2025-01-15T14:00:00.000Z |
${now:yyyyMMddHHmmss} | 同 ${lutc:yyyyMMddHHmmss} | 20250115140000 |
${timestamp} | 当前 Unix 时间戳(秒) | 1736949600 |
${timestamp:yyyyMMddHHmmss} | 同 ${lutc:yyyyMMddHHmmss} | 20250115140000 |
${(b)yyyyMMddHHmmss} | 节目开始时间(本地时间,long format) | 20250115183045 |
${(e)yyyyMMddHHmmss} | 节目结束时间(本地时间,long format) | 20250115203045 |
${(b)yyyyMMdd|UTC} | 节目开始时间(UTC,long format) | 20250115103045 |
${(e)yyyyMMdd|UTC} | 节目结束时间(UTC,long format) | 20250115123045 |
${(b)timestamp} | 节目开始时间的 Unix 时间戳(秒) | 1736937045 |
${(e)timestamp} | 节目结束时间的 Unix 时间戳(秒) | 1736944245 |
${yyyy} | 节目开始时间:4 位年份(本地时间) | 2025 |
${MM} | 节目开始时间:月份 01-12(本地时间) | 01 |
${dd} | 节目开始时间:日期 01-31(本地时间) | 15 |
${HH} | 节目开始时间:小时 00-23(本地时间) | 18 |
${mm} | 节目开始时间:分钟 00-59(本地时间) | 30 |
${ss} | 节目开始时间:秒数 00-59(本地时间) | 45 |
${duration} | 节目时长(秒) | 7200 |
{} 格式(使用 short format)
| 占位符 | 说明 | 示例输出 |
|---|---|---|
{utc} | 节目开始时间(UTC,ISO8601 格式) | 2025-01-15T10:30:45.000Z |
{utc:YmdHMS} | 节目开始时间(UTC,自定义 short format) | 20250115103045 |
{utcend} | 节目结束时间(UTC,ISO8601 格式) | 2025-01-15T12:30:45.000Z |
{utcend:YmdHMS} | 节目结束时间(UTC,自定义 short format) | 20250115123045 |
{start} | 同 {utc} | 2025-01-15T10:30:45.000Z |
{start:YmdHMS} | 同 {utc:YmdHMS} | 20250115103045 |
{end} | 同 {utcend} | 2025-01-15T12:30:45.000Z |
{end:YmdHMS} | 同 {utcend:YmdHMS} | 20250115123045 |
{lutc} | 当前时间(UTC,ISO8601 格式) | 2025-01-15T14:00:00.000Z |
{lutc:YmdHMS} | 当前时间(UTC,自定义 short format) | 20250115140000 |
{now} | 同 {lutc} | 2025-01-15T14:00:00.000Z |
{now:YmdHMS} | 同 {lutc:YmdHMS} | 20250115140000 |
{timestamp} | 当前 Unix 时间戳(秒) | 1736949600 |
{timestamp:YmdHMS} | 同 {lutc:YmdHMS} | 20250115140000 |
{(b)YmdHMS} | 节目开始时间(本地时间,short format) | 20250115183045 |
{(e)YmdHMS} | 节目结束时间(本地时间,short format) | 20250115203045 |
{(b)YmdHMS|UTC} | 节目开始时间(UTC,short format) | 20250115103045 |
{(e)YmdHMS|UTC} | 节目结束时间(UTC,short format) | 20250115123045 |
{(b)timestamp} | 节目开始时间的 Unix 时间戳(秒) | 1736937045 |
{(e)timestamp} | 节目结束时间的 Unix 时间戳(秒) | 1736944245 |
{Y} | 节目开始时间:4 位年份(本地时间) | 2025 |
{m} | 节目开始时间:月份 01-12(本地时间) | 01 |
{d} | 节目开始时间:日期 01-31(本地时间) | 15 |
{H} | 节目开始时间:小时 00-23(本地时间) | 18 |
{M} | 节目开始时间:分钟 00-59(本地时间) | 30 |
{S} | 节目开始时间:秒数 00-59(本地时间) | 45 |
{duration} | 节目时长(秒) | 7200 |
格式说明
Long Format(长格式):用于 ${} 括号中的自定义格式
yyyy- 4 位年份MM- 2 位月份(01-12)dd- 2 位日期(01-31)HH- 2 位小时(00-23)mm- 2 位分钟(00-59)ss- 2 位秒数(00-59)
示例:${utc:yyyyMMddHHmmss} → 20250115103045
Short Format(短格式):用于 {} 括号中的自定义格式
Y- 4 位年份m- 2 位月份(01-12)d- 2 位日期(01-31)H- 2 位小时(00-23)M- 2 位分钟(00-59)S- 2 位秒数(00-59)
示例:{utc:YmdHMS} → 20250115103045
相关文档
- M3U 播放列表集成:M3U 配置和线路标签
- FCC 快速换台配置:启用毫秒级换台功能
- 配置参数详解:播放器相关配置参数