跳转到内容

内置 Web 播放器

rtp2httpd 内置了一个基于 Web 的现代化播放器,可以直接在浏览器中观看已配置的 M3U 频道列表,无需安装任何客户端。

访问方式

配置好 M3U 播放列表后,通过浏览器访问:

url
http://服务器地址:端口/player

示例

url
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

相关文档

基于 GPL-2.0 许可证发布