iptv-api

Guovin活跃维护

自动采集、校验并测速 IPTV 直播源,生成可直接播放的 M3U/TXT/API 结果,支持自定义频道、IPv4/IPv6 与 Docker、Actions 多端部署。

⚡️ IPTV直播源自动更新工具:自动采集、校验、测速并生成可播放结果,支持 M3U/TXT/API 输出、自定义频道、IPv4/IPv6、Docker、GitHub Actions、CLI 与 GUI 多端部署

3.1.0发布于 2026-10-12 03:16 UTC26,045star +36 / 7 天7,711fork同步于 2026-11-10 11:22 UTC

怎么上手

由 README 提炼,执行前请确认
pip install pipenv
pipenv install --dev
pipenv run dev
硬件要求按 README 说明

README 未说明显存或 GPU 要求;Docker 镜像支持 amd64/arm64/arm v7,分辨率检测需系统安装 FFmpeg,推流依赖 FFmpeg 与带 RTMP 模块的 Nginx。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自动采集校验测速并生成可播放 IPTV 直播源列表的工具,支持多端部署

自动采集、校验并测速 IPTV 直播源,生成可直接播放的 M3U/TXT/API 结果,支持自定义频道、IPv4/IPv6 与 Docker、Actions 多端部署。

核心能力

  • 多源聚合本地源与订阅源并识别无效地址
  • 测速获取延迟速率分辨率帧率并过滤无效接口
  • 内置 2769 个频道与 7254 条别名自动归一化匹配
  • 输出 M3U/TXT 与 HTTP 接口,支持 IPv4/IPv6 分离
  • 支持推流、EPG、台标、广告过滤与定时任务

容易踩的坑

项目不提供数据源,需自行在 config 目录添加订阅源或本地源后才能生成结果;Docker 容器内部端口为 8080,手动运行时需映射如 -p 80:8080;GitHub Actions 仅支持低频手动生成,定时执行需改用 Docker、命令行或 GUI。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本3.1.0
  1. playlist-20261012-112551-utc-plus-0800Generated playlist · 2026-10-12 11:25:51 (Asia/Shanghai)pre-release2026-10-12 · 2026-10-12 03:26 UTC
    查看更新说明

    主仓库 Pages 页面提供订阅地址与预览,下载按钮指向本次 Release;其结果和日志仅用于功能测试,不保证内容完整性、可用性或持续更新。实际使用请 Fork 项目 并运行自己的工作流。

    The upstream Pages site provides subscription URLs and previews, with Download buttons pointing to this Release. Its results and logs are for functional testing only. Content completeness, availability, and continued updates are not guaranteed. For actual use, Fork the project and run your own workflow.

    打开 GitHub Pages 结果页面 / Open GitHub Pages results page

  2. 3.1.0v3.1.0最新正式版2026-10-12 · 2026-10-12 03:16 UTC

    2026/10/12

    🚀 新增功能

    • 桌面版支持自动下载、校验和安装更新,并保留用户配置及运行数据。
    • 支持在设置中迁移配置与输出目录,便于便携使用和备份(#1403)。
    • GitHub Actions 生成的订阅支持通过 GitHub Pages 访问、预览和复制链接,通过 Releases 下载历史结果;同时提供运行日志和中英文切换。
    • 扩充频道别名库,优化别名与数据源编辑体验;修改别名后下次更新即可生效,无需重启(#1082、#1418)。

    🐛 修复与优化

    • 优化大规模频道数据的查询与界面刷新,减少频道管理卡顿(#1408)。
    • 限制 EPG 解析和直播采样的资源占用,修复单个请求取消导致整轮测速中断的问题(#1389、#1407)。
    • 修复 Docker 代理配置被空环境变量覆盖的问题,直播测速与媒体探测保持直连,恢复 HLS 临时目录兼容性。
    • 修复部分环境下 SQLite WAL 写入失败和日志重新生成后显示不完整的问题(#1417、#1419)。
    • 改进桌面服务的启停与退出清理,修复 Windows 缺少运行依赖及后台运行反复弹出控制台的问题(#1399)。

    🔒 安全更新

    • 升级 aiohttp、urllib3 及相关传递依赖,修复 HTTP 解析、WebSocket、流式响应和文件访问相关漏洞。

    🆙 升级提示

    • 继续使用 Python 3.14;启用订阅源 EPG 自动发现需手动开启 open_subscribe_epg,以控制资源占用。

    2026/10/12

    🚀 New Features

    • The desktop application can download, verify, and install updates while preserving user configuration and runtime data.
    • Configuration and output directories can be migrated from Settings for portable use and backups (#1403).
    • GitHub Actions results are available through GitHub Pages for subscription links, previews, and copying, and through Releases for historical downloads, with run logs and Chinese/English switching.
    • Expanded channel aliases and improved alias and source editing; saved aliases take effect on the next update without restarting (#1082, #1418).

    🐛 Fixes and Improvements

    • Improved queries and UI refreshes for large channel datasets to reduce freezes (#1408).
    • Bounded EPG parsing and live-stream sampling resources, and fixed isolated request cancellation aborting an entire speed-test run (#1389, #1407).
    • Fixed empty environment variables overriding Docker proxy settings, kept media checks on direct connections, and restored HLS temporary-directory compatibility.
    • Fixed SQLite WAL write failures in affected environments and incomplete log displays after regeneration (#1417, #1419).
    • Improved desktop service startup, shutdown, and cleanup; fixed missing Windows runtime dependencies and repeated background console windows (#1399).

    🔒 Security Updates

    • Updated aiohttp, urllib3, and related transitive dependencies to fix vulnerabilities in HTTP parsing, WebSockets, streaming responses, and file access.

    🆙 Upgrade Notes

    • Python 3.14 remains required. Enable open_subscribe_epg explicitly if automatic EPG discovery from subscriptions is needed; it is disabled by default to limit resource usage.
  3. playlist-20260928-123124-utc-plus-0800Generated playlist · 2026-09-28 12:31:24 (Asia/Shanghai)pre-release2026-09-28 · 2026-09-28 04:31 UTC
    查看更新说明

    主仓库 Pages 页面提供订阅地址与预览,下载按钮指向本次 Release;其结果和日志仅用于功能测试,不保证内容完整性、可用性或持续更新。实际使用请 Fork 项目 并运行自己的工作流。

    The upstream Pages site provides subscription URLs and previews, with Download buttons pointing to this Release. Its results and logs are for functional testing only. Content completeness, availability, and continued updates are not guaranteed. For actual use, Fork the project and run your own workflow.

    打开 GitHub Pages 结果页面 / Open GitHub Pages results page

  4. playlist-20260920-151608-utc-plus-0800Generated playlist · 2026-09-20 15:16:08 (Asia/Shanghai)pre-release2026-09-20 · 2026-09-20 07:16 UTC
    查看更新说明

    主仓库发布的 Pages 链接和 Release 结果仅用于功能测试,不保证内容完整性、可用性或持续更新。实际使用请 Fork 项目 并运行自己的工作流。

    Pages links and Release results from the upstream repository are for functional testing only. Content completeness, availability, and continued updates are not guaranteed. For actual use, Fork the project and run your own workflow.

    打开 GitHub Pages 结果页面 / Open GitHub Pages results page

  5. playlist-20260920-124817-utc-plus-0800Generated playlist · 2026-09-20 12:48:17 (Asia/Shanghai) (test only)pre-release2026-09-20 · 2026-09-20 04:48 UTC
    查看更新说明

    Official repository Pages and Release results are for functional testing only. Content completeness, availability, and continued updates are not guaranteed. Fork the project and run your own workflow for actual use.

    主仓库发布的 Pages 链接和 Release 结果仅用于功能测试,不保证内容完整性、可用性或持续更新。实际使用请 Fork 项目并运行自己的工作流。

    This prerelease is retained with independent asset download counts. / 此预发布版会保留,用于独立统计本次附件的下载量。

    Open Pages test result links / 打开 Pages 测试结果页

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    English | 中文

    赞助商

    核心特性

    功能支⁠持⁠状⁠态说明
    自⁠定⁠义⁠模⁠板✅生成自己想要的频道菜单
    频⁠道⁠别⁠名✅已收录 2,769 个频道、7,254 条别名(含 48 条正则);自动归一化并匹配名称差异
    多⁠源⁠聚⁠合✅本地源、订阅源(支持设置UA,识别无效地址并自动停用)
    推⁠流✅改善弱网播放体验,支持浏览器直接播放,自动转码适配
    回⁠放⁠类⁠接⁠口✅回放类接口的获取与生成
    EPG✅获取并显示频道预告内容
    频⁠道⁠台⁠标✅自定义频道台标,支持本地添加或远程库
    测⁠速⁠验⁠效✅获取延迟、速率、分辨率、帧率,过滤无效接口,支持实时输出结果
    播⁠放⁠截⁠图✅可选自动截图,辅助验证频道内容,支持 GUI 预览与批量刷新
    广⁠告⁠过⁠滤✅自动识别并过滤无信号/广告等循环占位源
    高⁠级⁠偏⁠好✅速率、分辨率、黑/白名单、归属地与运营商自定义过滤
    结⁠果⁠管⁠理✅结果分类存储与访问、日志记录、未匹配频道记录、统计分析、冻结过滤/解冻回归、数据缓存
    定⁠时⁠任⁠务✅GUI、命令行与 Docker 可定时或间隔执行,不作用于 GitHub Actions
    暂⁠停⁠与⁠继⁠续✅桌面端更新过程中可暂停,并从当前进度继续
    多⁠平⁠台⁠部⁠署✅工作流、命令行、GUI 软件、Docker (amd64/arm64/arm v7)
    更⁠多⁠功⁠能✨详见配置参数章节

    架构与运行流程

    桌面 GUI、命令行、Docker 与 GitHub Actions 共用同一套更新引擎:读取配置与频道模板,采集并匹配候选接口,按测速模式筛选,再生成播放列表及相关数据。不同运行方式负责各自的任务触发与结果访问。

    本地结果可由 GUI 或文件直接读取,也可通过独立 HTTP 服务访问;GitHub Actions 将结果发布到 Pages 与 Release。推流按需依赖 FFmpeg 与带 RTMP 模块的 Nginx。详见架构文档中的更新阶段、桌面页面与组件依赖,以及教程中的部署与推流图解。

    配置

    [!NOTE]
    以下配置项位于 config/config.ini 文件中,支持通过配置文件或环境变量修改,保存后重启即可生效。也可查看独立的配置参数文档。

    [!TIP] 生成结果质量取决于数据源与网络环境等因素,请合理调整配置参数以获取更符合需求的结果。

    配置项描述默认值
    open_update开启更新,用于控制是否更新接口,若关闭则所有工作模式(获取接口和测速)均停止True
    open_unmatch_category开启未匹配频道分类,未匹配 source_file 的频道会进入该分类并直接写入结果,不参与测速False
    open_empty_category开启无结果频道分类,自动归类至底部False
    open_update_time开启显示更新时间True
    open_url_info开启显示接口说明信息,用于控制是否显示接口来源、分辨率、协议类型等信息,为 $ 符号后的内容,播放软件使用该信息对接口进行描述,若部分播放器(如 PotPlayer)不支持解析导致无法播放可关闭False
    open_epg开启 EPG 功能,支持频道显示预告内容True
    open_subscribe_epg开启从订阅源 m3u 头部 url-tvg/x-tvg-url 自动提取 EPG 地址,并入 EPG 源一起合并,无需手动维护 config/epg.txt;epg.txt 源优先,订阅源仅补充未覆盖频道;需 open_epg = TrueTrue
    open_m3u_result开启转换生成 m3u 文件类型结果链接,支持显示频道图标True
    output_urls_limit每个频道最终导出的接口数量;旧版 urls_limit 仍兼容5
    update_time_position更新时间显示位置,需要开启 open_update_time 才能生效,可选值: top、bottom;top: 显示于结果顶部,bottom: 显示于结果底部top
    language系统语言设置;可选值: zh_CN、enzh_CN
    update_mode定时执行更新时间模式,不作用于工作流;可选值: interval、time; interval: 按间隔时间执行,time: 按指定时间点执行interval
    update_interval定时执行更新时间间隔,仅在update_mode = interval时生效,单位小时,设置 0 或空则只运行一次12
    update_times定时执行更新时间点,仅在update_mode = time时生效,格式 HH:MM,支持多个时间点逗号分隔
    update_startup启动时执行更新,用于控制程序启动后是否立即执行一次更新True
    time_zone时区,可用于控制定时执行时区或显示更新时间的时区;可选值: Asia/Shanghai 或其它时区编码Asia/Shanghai
    source_file模板文件路径config/demo.txt
    final_file生成结果文件路径output/result.txt
    open_realtime_write开启实时写入结果文件,在测速过程中可以访问并使用更新结果True
    open_service开启页面服务,用于控制是否启动结果页面服务;如果使用青龙等平台部署,有专门设定的定时任务,需要更新完成后停止运行,可以关闭该功能True
    service_portHTTP 服务访问端口;桌面版启用推流时由 Nginx 监听,新配置通常只需修改此端口8080
    public_url推荐的公网完整访问地址,例如 https://iptv.example.com 或 http://host:8088;用于统一生成播放列表、EPG、台标和服务链接
    app_port高级兼容设置:Flask 内部 API 端口,通常无需修改,也不应作为用户访问端口5180
    public_scheme高级兼容设置:旧版公网协议,仅在 public_url 留空时生效;可选值: http、httpshttp
    public_domain高级兼容设置:旧版公网 Host,仅在 public_url 留空时生效,默认使用本机 IP127.0.0.1
    cdn_urlCDN 代理加速地址,用于订阅源、EPG 与频道图标等支持的资源;GitHub Actions 不使用该配置加速 Pages 发布结果。支持多个地址(英文逗号分隔)
    http_proxyHTTP 代理地址,仅用于获取订阅源和 EPG 数据;测速、媒体探测和截图保持直连
    open_local开启本地源功能,将使用模板文件与本地源文件(local.txt)中的数据True
    open_subscribe开启订阅源功能True
    open_auto_disable_source开启自动停用失效地址,失效项会在 config/subscribe.txt 和 config/epg.txt 中加 #;Actions 不会提交该变更False
    open_history开启使用历史更新结果(包含模板与结果文件的接口),合并至本次更新;Actions 仅尝试从短期缓存恢复历史True
    open_headers开启使用 M3U 内含的请求头验证信息,用于测速等操作,个别播放器可能不支持播放这类含验证信息的接口True
    user_agent全局请求 User-Agent,用于拉取订阅源、测速以及写入 m3u 结果(无需开启 open_headers),留空则使用内置默认 UA;优先级:接口自带 UA > 订阅地址 UA > 全局 UA > 内置默认 UA
    open_speed_test开启测速功能,获取响应时间、速率、分辨率True
    speed_test_mode测速工作模式:quick、full 或 manual;manual 仅采集候选,测速由 GUI 操作触发quick
    speed_test_target快速测速每个频道的有效结果目标;设为 0 跟随 output_urls_limit0
    quick_test_targetspeed_test_target 的可读别名;非 0 时优先作为快速测速目标0
    open_stream_screenshot自动为可播放候选接口获取播放截图;会增加 FFmpeg 解码开销和更新时间,关闭时仍可在 GUI 手动获取False
    stream_screenshot_timeout单个接口截图超时时长,单位秒(s)5
    stream_screenshot_width播放截图最大宽度,按原始宽高比缩放640
    open_filter_resolution开启分辨率过滤,低于最小分辨率(min_resolution)的接口将会被过滤,GUI 用户需要手动安装 FFmpeg,程序会自动调用 FFmpeg 获取接口分辨率,推荐开启,虽然会增加测速阶段耗时,但能更有效地区分是否可播放的接口True
    open_filter_speed开启速率过滤,低于最小速率(min_speed)的接口将会被过滤True
    open_filter_ad开启广告过滤,自动识别并过滤无信号/广告等循环占位源(含 #EXT-X-ENDLIST 的短循环列表,或片段地址包含广告关键字),复用测速阶段已抓取的播放列表进行判断,不增加额外请求与测速耗时True
    open_full_speed_test开启全量测速,频道下所有候选接口(白名单除外)都进行测速;关闭时达到 speed_test_target 后停止该频道剩余测速False
    open_supply开启补偿机制模式,用于控制当频道接口数量不足时,自动将不满足条件(例如低于最小速率)但可能可用的接口添加至结果中,从而避免结果为空的情况;开启后,不符合 location/isp 归属地或运营商的接口也不再直接丢弃,而是降权排到该频道结果的末尾作为补充False
    sort_by结果排序维度,控制每个频道内接口的排序优先级,按从前到后的顺序依次比较,逗号分隔;可选值: speed(速率,高优先)、delay(延迟,低优先)、resolution(分辨率,高优先),例如: resolution,speedspeed
    min_resolution接口最小分辨率,需要开启 open_filter_resolution 才能生效1280x720
    max_resolution接口最大分辨率,需要开启 open_filter_resolution 才能生效3840x2160
    min_speed接口最小速率(单位 MiB/s),需要开启 open_filter_speed 才能生效0.5
    resolution_speed_map分辨率与速率映射关系,用于控制不同分辨率接口的最低速率要求,格式为 resolution:speed,多个映射关系逗号分隔1280x720:0.2,1920x1080:0.5,3840x2160:1.0
    performance_mode性能模式;auto 根据设备或容器的 CPU、内存自动选择,powersave 优先降低资源消耗,balance 平衡资源与速度,fast 充分利用高性能设备auto
    speed_test_limit测速网络并发高级覆盖值;0 表示由性能模式自动决定,大于 0 时覆盖自动测速并发,不影响媒体探测和源抓取并发0
    speed_test_timeout单个接口测速超时时长,单位秒(s);数值越大测速所需时间越长,能提高获取接口数量,但质量会有所下降;数值越小测速所需时间越短,能获取低延时的接口,质量较好;调整此值能优化更新时间10
    speed_test_filter_host测速阶段使用 Host 地址进行过滤,相同 Host 地址的频道将共用测速数据,开启后可大幅减少测速所需时间,但可能会导致测速结果不准确False
    request_timeout查询请求超时时长,单位秒(s),用于控制查询接口文本链接的超时时长以及重试时长,调整此值能优化更新时间10
    ipv6_support强制认为当前网络支持 IPv6,跳过检测False
    ipv_type生成结果中接口的协议类型;可选值: ipv4、ipv6、allall
    ipv_type_prefer接口协议类型偏好,优先将该类型的接口排在结果前面;可选值: ipv4、ipv6、autoauto
    location接口归属地,用于控制结果只包含填写的归属地类型,支持关键字过滤,英文逗号分隔,不填写表示不指定归属地,建议使用靠近使用者的归属地,能提升播放体验
    isp接口运营商,用于控制结果中只包含填写的运营商类型,支持关键字过滤,英文逗号分隔,不填写表示不指定运营商
    origin_type_prefer结果偏好的接口来源,结果优先按该顺序进行排序,逗号分隔,例如: local,subscribe;不填写则表示不指定来源,按照接口速率排序
    local_num结果中偏好的本地源接口数量10
    subscribe_num结果中偏好的订阅源接口数量10
    logo_url频道台标库地址
    logo_type频道台标文件类型png
    open_subscribe_logo开启优先使用订阅源 m3u 中自带的 tvg-logo 台标地址,仅当订阅源未提供时才回退到台标库True
    open_rtmp开启 RTMP 推流功能,仅建议用于自有或已授权内容,需要安装 FFmpeg,利用本地带宽提升接口播放体验True
    nginx_http_port高级兼容设置:旧版 HTTP 端口名;新配置请使用 service_port8080
    nginx_rtmp_port高级设置:Nginx RTMP 协议端口,仅推流客户端需要1935
    rtmp_idle_timeoutRTMP 频道接口空闲停止推流超时时长,单位秒(s),用于控制接口无人观看时超过该时长后停止推流,调整此值能优化服务器资源占用300
    rtmp_max_streamsRTMP 推流最大并发数量,用于控制同时推流的频道数量,数值越大服务器压力越大,调整此值能优化服务器资源占用10
    rtmp_transcode_mode推流转码模式,copy 则不进行转码,以复制方式输出,可以最大程度节省CPU消耗,auto 则自适应匹配播放器进行转码,会增加CPU消耗但能提升兼容性copy

    快速上手

    配置与结果目录

    [!NOTE] 本项目不提供数据源,请自行添加后生成结果(如何添加数据源?)。

    iptv-api/                  # 项目根目录
    ├── config                 # 配置文件目录,包含配置文件、模板文件等
    │   └── hls                # 本地HLS推流文件目录,用于存放多个频道名称命名的视频文件
    │   └── local              # 本地源文件目录,用于存放多个本地源文件,支持txt/m3u格式
    │   └── config.ini         # 配置参数文件
    │   └── demo.txt           # 频道模板
    │   └── alias.txt          # 频道别名
    │   └── blacklist.txt      # 接口黑名单
    │   └── whitelist.txt      # 接口白名单
    │   └── subscribe.txt      # 频道订阅源列表
    │   └── local.txt          # 本地源文件
    │   └── epg.txt            # EPG订阅源列表
    └── output                 # 本地运行结果目录,不应提交到 Git
        └── data               # 结果数据缓存目录
        └── epg                # EPG结果目录
        └── ipv4               # IPv4结果目录
        └── ipv6               # IPv6结果目录
        └── result.m3u/txt     # m3u/txt结果
        └── hls.m3u/txt        # RTMP hls推流结果
        └── log                # 日志文件目录
            └── log.log        # 带时间、级别和运行 ID 的运行日志
            └── runtime.jsonl  # 结构化运行事件
            └── result.log     # 有效结果日志
            └── speed_test.log # 测速日志
            └── statistic.log  # 统计结果日志
            └── unmatch.log    # 未匹配频道记录
            └── *.jsonl        # 对应日志的结构化 JSON Lines 版本
    

    工作流

    可直接访问主仓库的 GitHub Pages 结果页,复制所需的在线链接到播放器订阅,也可预览或下载结果文件。使用主仓库结果无需 Fork 或运行工作流;如需使用自己的配置生成结果,请继续以下部署步骤。

    [!WARNING] GitHub Actions 仅支持低频手动生成,结果通过 Pages Artifact 和每次运行独立的预发布版发布,不再提交到 Git。 旧的 raw.githubusercontent.com/.../output/... 链接不再更新;需要定时执行时请使用 Docker、命令行或 GUI。

    Fork 本项目后,先在 Settings → Pages 中将发布源设置为 GitHub Actions,再手动运行 Generate playlist manually。播放器在线使用请打开 Pages 页面获取相应的结果地址;页面可预览文件,下载按钮指向本次 Release 附件。整个过程不会产生 Git 提交。

    https://您的GitHub用户名.github.io/仓库名/result.m3u
    https://您的GitHub用户名.github.io/仓库名/result.txt
    

    迁移和完整操作步骤请见详细教程。

    命令行

    pip install pipenv
    
    pipenv install --dev
    

    启动更新:

    pipenv run dev
    

    启动服务:

    pipenv run service
    

    GUI 软件

    新版桌面 GUI 是 Windows 与 macOS 当前唯一受支持的图形界面,提供一键更新、实时进度、频道与结果管理、重新测速、RTMP 推流监控、数据源配置及任务历史。Docker 部署使用 Web 结果页,不包含此桌面界面。

    安装依赖并启动桌面端:

    pipenv install --dev
    pipenv run ui
    

    构建当前平台的安装包:

    pipenv run ui_build
    

    [!WARNING] 旧版 Tkinter 界面已弃用,仅为兼容现有用户而临时保留,并将在后续版本中移除。该界面不再维护、修复问题或新增功能;过渡期间仍可通过 pipenv run legacy_ui 启动,并通过 pipenv run legacy_ui_build 打包。

    分辨率检测需要系统安装 FFmpeg。Windows 可使用随包提供的 nginx-rtmp;macOS 会自动检测系统中带 RTMP 模块的 nginx,也可通过 IPTV_API_NGINX_PATH 和 IPTV_API_NGINX_RTMP_MODULE 指定可执行文件与动态模块。

    Docker

    1. Compose 部署(推荐)

    下载docker-compose.yml或复制内容创建(内部参数可按需更改),在文件所在路径下运行以下命令即可部署:

    docker compose up -d
    
    2. 手动命令部署
    (1)拉取镜像
    docker pull guovern/iptv-api:latest
    

    [!CAUTION] 若官方镜像拉取失败,可使用以下代理加速地址;它可能提供旧版本镜像。

    docker pull docker.1ms.run/guovern/iptv-api:latest
    
    (2)运行容器
    docker run -d -p 80:8080 guovern/iptv-api
    

    环境变量:

    变量描述默认值
    PUBLIC_URL推荐:完整公网地址,例如 http://192.168.1.10 或 https://iptv.example.com
    PUBLIC_DOMAIN兼容配置:PUBLIC_URL 留空时使用的公网域名或 IP127.0.0.1
    PUBLIC_PORT兼容配置:PUBLIC_URL 留空时使用的宿主机映射端口80
    NGINX_HTTP_PORT高级兼容配置:容器内部 HTTP 端口,通常保持默认8080

    [!NOTE] 当宿主机/Docker 已启用 IPv6 时,容器会自动同时监听 IPv6 地址,无需额外配置;纯 IPv4 或禁用 IPv6 的环境则自动跳过。

    如果需要修改环境变量,在上述运行命令后添加以下参数:

    # 推荐:直接设置完整公网地址
    -e PUBLIC_URL=https://iptv.example.com
    

    使用仓库中的 Compose 文件时,只需通过 PORT 修改宿主机端口,例如 PORT=8088 docker compose up -d;Compose 会同时更新端口映射和兼容的 PUBLIC_PORT。 未设置或留空的 PUBLIC_URL 不会覆盖挂载配置文件中的 public_url。

    除了以上环境变量,还支持通过环境变量覆盖配置文件中的配置项

    挂载: 实现宿主机文件与容器文件同步,修改模板、配置、获取更新结果文件可直接在宿主机文件夹下操作,在上述运行命令后添加以下参数

    # 挂载配置目录
    -v /iptv-api/config:/iptv-api/config
    # 挂载结果目录
    -v /iptv-api/output:/iptv-api/output
    
    3. 更新结果
    接口描述
    /默认接口
    /m3um3u 格式接口
    /txttxt 格式接口
    /ipv4ipv4 默认接口
    /ipv6ipv6 默认接口
    /ipv4/txtipv4 txt接口
    /ipv6/txtipv6 txt接口
    /ipv4/m3uipv4 m3u接口
    /ipv6/m3uipv6 m3u接口
    /content接口文本内容
    /log/result有效结果的日志
    /log/speed-test所有参与测速接口的日志
    /log/statistic统计结果的日志
    /log/unmatch未匹配频道的日志

    日志接口默认返回兼容的纯文本格式;添加 ?format=jsonl 可获取结构化 JSON Lines。CLI 在交互式终端使用动态多任务进度,Docker、CI、重定向输出或设置 IPTV_API_PLAIN_OUTPUT=1 时自动使用稳定的逐行输出。

    RTMP 推流:

    [!WARNING] 开启推流后会默认推流获取到的接口(如订阅源)。请仅对你有明确授权、可合法分发或仅用于内部测试的内容启用该功能。在中国大陆使用时,请特别确认内容授权、版权、网络视听与广播电视等相关合规要求;不要将本项目用于传播、转发或公开分发未经授权的直播源/节目源。

    如果是服务器部署,建议通过 PUBLIC_URL 配置完整公网地址;旧版 PUBLIC_DOMAIN 与 PUBLIC_PORT 仍兼容。若需推流本地视频源,可在 config 目录下新建 hls 文件夹,将以频道名称命名的视频文件放入其中,程序会自动推流到对应频道中。

    推流接口描述
    /hls推流接口
    /hls/txt推流txt接口
    /hls/m3u推流m3u接口
    /hls/ipv4推流ipv4 默认接口
    /hls/ipv6推流ipv6 默认接口
    /hls/ipv4/txt推流ipv4 txt接口
    /hls/ipv4/m3u推流ipv4 m3u接口
    /hls/ipv6/txt推流ipv6 txt接口
    /hls/ipv6/m3u推流ipv6 m3u接口
    /stat推流状态统计接口

    如何使用推流?

    更新日志

    更新日志

    关注

    GitHub

    关注我的 GitHub 账号 Guovin,获取更多实用项目

    微信公众号

    微信公众号搜索 Govin,或扫码,接收更新推送、学习更多使用技巧:

    [!TIP] 回复 cdn 可获取加速地址,提升订阅源与频道图标等资源的访问速度。

    微信公众号

    联系我

    联系邮箱:[email protected]

    捐赠

    Support me on Ko-fi

    支付宝微信
    支付宝扫码微信扫码

    免责声明

    • 本项目仅为工具/框架,不包含或提供任何直播源、受版权保护的节目或其他第三方内容,也不托管、缓存或承诺任何可用内容。用户需自行添加数据源,并确保所使用的数据源及其获取、转发、播放行为符合所在地区法律法规。
    • 使用者对通过本项目获取、分发或播放的内容独立负责。请勿将本项目用于传播、分发、聚合、转播或观看未经授权的受版权保护内容,尤其是在中国大陆地区使用时,更应确保内容授权、平台资质、备案/许可及其他监管要求均已满足。
    • 本项目提供的 RTMP/HLS 推流仅用于自有内容、已获授权内容或封闭环境下的技术测试;如果你无法确认授权状态,请关闭 open_rtmp,不要对公网开放相关接口。
    • 在使用本项目时,应遵守当地相关法律法规与监管要求。作者不对因用户使用本项目而产生的任何法律责任承担责任。
    • 商业、企业或生产环境使用前建议咨询合规/法律顾问并完成审查。

    许可证

    AGPL-3.0 License © 2024-PRESENT Govin

    [!IMPORTANT] 本项目采用 AGPL-3.0。若将修改后的程序作为网络服务、公开容器镜像或以其他对外服务方式运行,须向使用者提供包括修改在内的完整源代码。详见:https://www.gnu.org/licenses/agpl-3.0.html