乐于分享
好东西不私藏

[php工具源码分享]IPTV直播源工具箱-网页播放器又进化了:支持 M3U 播放列表 + EPG + 回看!

[php工具源码分享]IPTV直播源工具箱-网页播放器又进化了:支持 M3U 播放列表 + EPG + 回看!

📺前言

上篇文章([php工具源码分享]IPTV直播源工具箱再添一款小工具–网页视频播放器,支持Socks5代理)介绍了这个“网页播放器”,主要定位是:

👉 万能播放器 + IPTV调试工具 + 代理神器

不过最近又做了一轮比较大的改动,这次不只是优化,而是功能层级直接升级了一档

一句话总结这次更新:

👉 从“单视频播放器”升级为“IPTV播放器”

说明:本次升级的播放器单放了一个目录player2,和上一版player共存,没有把它加入IPTV工具箱页面,需要的请自行修改目录名

下面重点聊聊这次新增的几个核心功能👇

🔄 一、播放历史 → 播放列表

    之前版本:

    • 只是简单记录播放历史
    • 更偏“工具型使用”

    现在直接改成:

    👉 完整的播放列表系统

    ✅ 新能力:

    • 支持导入m3u列表
    • 支持epg识别
    • 支持切换播放源
    • 支持回看

    📌 这意味着什么?

    👉 从“临时播放一个链接”
    ➡️ 变成“长期使用的频道播放器”

    📥 二、支持导入 M3U 播放列表

        这一点可以说是最关键的功能升级

        现在播放器支持:

        👉 直接导入 M3U / M3U8 播放列表

        📌 支持方式:

        • 本地文件导入
        • URL导入(远程订阅)【注意,这个功能此版本未上线,待更新】

        🧠 实际使用场景

        比如你有:

        iptv.m3u

        导入后可以直接:

        • 自动生成频道列表
        • 点击频道直接播放
        • 配合代理解决跨域问题

        👉 直接变身“网页版 IPTV 客户端”


        📺 体验上的变化

        以前是:

        👉 粘一个链接 → 播一个

        现在是:

        👉 导入列表 → 像电视一样切台

        频道列表体验优化

        基于 M3U 的解析,现在播放器已经具备基础频道管理能力:

        支持:

        • 频道名称展示
        • 分组(取决于 m3u 内容)
        • 快速切换频道
        • 当前播放高亮

        👉 已经很接近 IPTV App 的使用体验了。

        🕒 四、EPG 节目单支持(进阶功能)

          这次更新还加入了:

          👉 EPG(电子节目单)支持


          📌 能实现什么?

          • 显示当前节目名称
          • 显示节目时间段
          • 查看频道节目安排

          🧠 使用前提

          需要你的 M3U 提供:

          • EPG XML 数据源(常见是 .xml、.xml.gz

          🎯 实际意义

          👉 不再只是“频道列表”,而是:

          📺 真正的电视体验

          注意:目前仅支持显示当天节目。
          ⏪ 五、回看功能(Timeshift)

            这次更新里一个比较“硬核”的功能是:

            👉 支持节目回看(Replay / Timeshift)


            📌 可以做什么?

            • 回看已经播过的节目
            • 按节目时间自动生成回放地址
            • 类似机顶盒的“回看 / 时移”体验

            ⚠️ 前提说明

            回看功能是否可用,取决于:

            • 视频源是否支持回看
            • IPTV服务端是否提供 timeshift
            • M3U 中是否正确配置参数

            👉 播放器本身只负责解析和拼接回看地址


            🧠 回看实现机制(核心说明)

            播放器基于 M3U 中的 catchup 配置,自动生成回看 URL。


            ⏱ 1、支持的时间占位符

            ▶️ 开始时间(节目开始)

            占位符
            说明
            示例
            ${(b)10}

             / ${start} / ${starttime}
            10位时间戳(秒)
            1714478400
            ${(b)}
            13位时间戳(毫秒)
            1714478400000
            ${(b)yyyyMMddHHmmss}
            14位时间
            20240429190000
            ${(b)yyyyMMddHHmm}
            12位时间
            202404291900
            ${(b)HHmmss}
            6位时间
            190000
            ${(b)HHmm}
            4位时间
            1900

            ▶️ 结束时间(节目结束)

            占位符
            说明
            示例
            ${(e)10}

             / ${end} / ${endtime} / ${timestamp}
            10位时间戳
            1714480440
            ${(e)}
            13位时间戳
            1714480440000
            ${(e)yyyyMMddHHmmss}
            14位时间
            20240429203400
            ${(e)yyyyMMddHHmm}
            12位时间
            202404292034
            ${(e)HHmmss}
            6位时间
            203400
            ${(e)HHmm}
            4位时间
            2034

            📌 注意:

            • ${timestamp}
               表示结束时间(不是开始时间)
            • 所有时间数据来自 EPG 节目单

            🔧 2、支持的 catchup 类型

            类型
            说明
            append
            在原 URL 后追加参数
            default
            直接使用模板替换整个 URL

            🔗 3、特殊源自动适配(PLTV)

            对于常见 IPTV 地址:

            /PLTV/

            播放器会自动处理为:

            👉 替换为 /TVOD/
            👉 自动追加回看参数:

            playseek=开始时间-结束时间(14位格式)

            🧩 4、默认回看规则

            如果 M3U 没有配置 catchup-source,则默认追加:

            &starttime=开始时间戳&endtime=结束时间戳

            📂 5、M3U 配置示例

            ✅ 示例1:追加时间戳

            #EXTM3U catchup="append" catchup-source="starttime=${(b)10}&endtime=${(e)10}"
            👉 生成:
            原URL?starttime=1714478400&endtime=1714480440

            ✅ 示例2:使用 start/end

            #EXTM3U catchup="append" catchup-source="start=${start}&end=${timestamp}"

            ✅ 示例3:完整URL替换

            #EXTM3U catchup="default" catchup-source="http://example.com/playback?id=123&st=${(b)10}&et=${(e)10}"

            ✅ 示例4:PLTV 源自动转换

            http://xxx/PLTV/xxx.m3u8
            👉 自动变为:
            http://xxx/TVOD/xxx.m3u8?playseek=20260505190000-20260505203400

            🎯 小结一下这个功能

            👉 这套逻辑的核心其实是:

            • 用 EPG 提供时间
            • 用 M3U 提供模板
            • 用 播放器自动拼接URL

            最终实现:

            📺 “点击节目 → 自动回看”

            回看功能过于复杂,不同的源回看格式不同,这里仅适配了几个常见格式。

            🔗 六、结合代理功能,效果更强

            别忘了这个播放器本身就有:

            👉 代理转发能力(proxy.php)

            现在结合新功能:

            功能
            作用
            M3U导入
            批量频道
            EPG
            节目单
            回看
            时间控制
            代理
            解决跨域/鉴权

            👉 四件套组合效果:

            直接可以替代一部分 IPTV 软件



            适合哪些人用?

            这版特别适合👇

            ✅ IPTV玩家

            • 管理自己的频道源
            • 测试订阅地址
            • 调整播放体验

            ✅ 技术折腾党

            • 调试 m3u8 / flv
            • 测试代理
            • 分析直播流

            ✅ 轻量替代客户端

            • 不想装APP
            • 临时用浏览器看电视
            📌 总结

            整体来看,这次更新让播放器从“单链接播放工具”变成了一个具备基础 IPTV 能力的网页播放器

            • 支持 M3U 播放列表
            • 支持 EPG 节目单
            • 支持回看(取决于信号源)
            • 配合代理可以解决大部分播放限制

            日常用来:

            👉 测试直播源、临时看频道、调试播放问题,都已经比较方便了。

            不过也要客观看待一点👇

            由于浏览器本身的限制(协议、安全策略、解码能力等),网页播放器在稳定性、兼容性和性能上,还是很难完全替代专业 IPTV 客户端。


            🧩 使用建议

            👉 轻度使用 / 调试场景:推荐这个网页播放器
            👉 长期观看 / 主力使用:建议使用专业 IPTV 播放软件

            比如:

            • 桌面端:IPTVnator、VLC
            • 移动端 / TV端:各类原生 IPTV App

            一句话总结:

            👉 它更适合当“工具”,而不是完全替代播放器。

            后台回复“20260506”获取此播放器源码