
1. 拉取镜像
bashdocker pull guovern/iptv-api:latest
2. 运行容器
bashdocker run -d -p 80:8080 guovern/iptv-api
环境变量:
| 变量 | 描述 | 默认值 |
|---|---|---|
| PUBLIC_DOMAIN | 公网域名或IP地址,决定外部访问或推流结果的Host地址 | 127.0.0.1 |
| PUBLIC_PORT | 公网端口,设置为映射后的端口,决定外部访问地址和推流结果地址的端口 | 80 |
| NGINX_HTTP_PORT | HTTP服务端口,外部访问需要映射该端口 | 8080 |
挂载:
实现宿主机文件与容器文件同步,修改模板、配置、获取更新结果文件可直接在宿主机文件夹下操作,在上述运行命令后添加以下参数
挂载配置目录:
bash-v /iptv-api/config:/iptv-api/config
挂载结果目录:
bash-v /iptv-api/output:/iptv-api/output
目录说明:
| 目录路径 | 说明 |
|---|---|
| config | 配置文件目录,包含配置文件、模板文件等 |
| config/config.ini | 配置参数文件 |
| config/rtp | 各地区运营商组播源ip |
| config/demo.txt | 频道模板 |
| config/alias.txt | 频道别名 |
| config/blacklist.txt | 接口黑名单 |
| config/whitelist.txt | 接口白名单 |
| config/subscribe.txt | 频道订阅源列表 |
| config/local.txt | 本地源文件 |
| config/epg.txt | EPG订阅源列表 |
| output | 结果文件目录,包含生成的结果文件等 |
| output/data | 结果数据缓存目录 |
| output/epg | EPG结果目录 |
| output/ipv4 | IPv4结果目录 |
| output/ipv6 | IPv6结果目录 |
| output/result(.m3u/txt) | m3u/txt结果 |
| output/hls(.m3u/txt) | RTMP推流hls结果 |
| output/log | 日志文件目录 |
| output/log/result.log | 有效结果日志 |
| output/log/speed_test.log | 测速日志 |
| output/log/statistic.log | 统计结果日志 |
| output/log/nomatch.log | 未匹配频道记录 |
| source.json | 点播源配置文件 |
配置:
以下配置项位于config/config.ini文件中,支持通过配置文件或环境变量(配置项同名)实现修改,修改保存后重启即可生效
| 配置项 | 描述 | 默认值 |
|---|---|---|
| open_update | 开启更新,用于控制是否更新接口,若关闭则所有工作模式(获取接口和测速)均停止 | True |
| open_empty_category | 开启无结果频道分类,自动归类至底部 | False |
| open_update_time | 开启显示更新时间 | True |
| open_url_info | 开启显示接口说明信息,用于控制是否显示接口来源、分辨率、协议类型等信息,为 $ 符号后的内容,播放软件使用该信息对接口进行描述,若部分播放器(如 PotPlayer)不支持解析导致无法播放可关闭 | False |
| open_epg | 开启 EPG 功能,支持频道显示预告内容 | True |
| open_m3u_result | 开启转换生成 m3u 文件类型结果链接,支持显示频道图标 | True |
| urls_limit | 单个频道接口数量 | 10 |
| update_time_position | 更新时间显示位置,需要开启 open_update_time 才能生效,可选值: top、bottom;top: 显示于结果顶部,bottom: 显示于结果底部 | top |
| 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_service | 开启页面服务,用于控制是否启动结果页面服务;如果使用青龙等平台部署,有专门设定的定时任务,需要更新完成后停止运行,可以关闭该功能 | True |
| app_port | 页面服务端口,用于控制页面服务的端口号 | 5180 |
| public_scheme | 公网协议;可选值: http、https | http |
| public_domain | 公网 Host 地址,用于生成结果中的访问地址,默认使用本机 IP | 127.0.0.1 |
| cdn_url | CDN 代理加速地址,用于订阅源、频道图标等资源的加速访问 | |
| open_driver | 开启浏览器运行,若更新无数据可开启此模式,较消耗性能 | False |
| open_hotel | 开启酒店源功能,关闭后所有酒店源工作模式都将关闭 | False |
| open_multicast | 开启组播源功能,关闭后所有组播源工作模式都将关闭 | False |
| open_local | 开启本地源功能,将使用模板文件与本地源文件(local.txt)中的数据 | True |
| open_subscribe | 开启订阅源功能 | True |
| open_online_search | 开启关键字搜索源功能 | False |
| open_hotel_foodie | 开启 Foodie 酒店源工作模式 | True |
| open_hotel_fofa | 开启 FOFA、ZoomEye 酒店源工作模式 | False |
| open_multicast_foodie | 开启 Foodie 组播源工作模式 | True |
| open_multicast_fofa | 开启 FOFA 组播源工作模式 | False |
| open_request | 开启查询请求,数据来源于网络(仅针对酒店源与组播源) | False |
| open_use_cache | 开启使用本地缓存数据,适用于查询请求失败场景(仅针对酒店源与组播源) | True |
| open_history | 开启使用历史更新结果(包含模板与结果文件的接口),合并至本次更新中 | True |
| open_headers | 开启使用 M3U 内含的请求头验证信息,用于测速等操作,注意:只有个别播放器支持播放这类含验证信息的接口,默认为关闭 | False |
| open_speed_test | 开启测速功能,获取响应时间、速率、分辨率 | True |
| open_filter_resolution | 开启分辨率过滤,低于最小分辨率(min_resolution)的接口将会被过滤,GUI 用户需要手动安装 FFmpeg,程序会自动调用 FFmpeg 获取接口分辨率,推荐开启,虽然会增加测速阶段耗时,但能更有效地区分是否可播放的接口 | True |
| open_filter_speed | 开启速率过滤,低于最小速率(min_speed)的接口将会被过滤 | True |
| open_supply | 开启补偿机制模式,用于控制当频道接口数量不足时,自动将不满足条件(例如低于最小速率)但可能可用的接口添加至结果中,从而避免结果为空的情况 | True |
| min_resolution | 接口最小分辨率,需要开启 open_filter_resolution 才能生效 | 1920x1080 |
| max_resolution | 接口最大分辨率,需要开启 open_filter_resolution 才能生效 | 1920x1080 |
| min_speed | 接口最小速率(单位 M/s),需要开启 open_filter_speed 才能生效 | 0.5 |
| speed_test_limit | 同时执行测速的接口数量,用于控制测速阶段的并发数量,数值越大测速所需时间越短,负载较高,结果可能不准确;数值越小测速所需时间越长,低负载,结果较准确;调整此值能优化更新时间 | 10 |
| speed_test_timeout | 单个接口测速超时时长,单位秒(s);数值越大测速所需时间越长,能提高获取接口数量,但质量会有所下降;数值越小测速所需时间越短,能获取低延时的接口,质量较好;调整此值能优化更新时间 | 10 |
| speed_test_filter_host | 测速阶段使用 Host 地址进行过滤,相同 Host 地址的频道将共用测速数据,开启后可大幅减少测速所需时间,但可能会导致测速结果不准确 | False |
| request_timeout | 查询请求超时时长,单位秒(s),用于控制查询接口文本链接的超时时长以及重试时长,调整此值能优化更新时间 | 10 |
| recent_days | 获取最近时间范围内更新的接口(单位天),适当减小可避免出现匹配问题 | 30 |
| ipv4_num | 结果中偏好的 IPv4 接口数量 | |
| ipv6_num | 结果中偏好的 IPv6 接口数量 | |
| ipv6_support | 强制认为当前网络支持 IPv6,跳过检测 | False |
| ipv_type | 生成结果中接口的协议类型;可选值: ipv4、ipv6、全部、all | 全部 |
| ipv_type_prefer | 接口协议类型偏好,优先将该类型的接口排在结果前面;可选值: ipv4、ipv6、自动、auto | auto |
| location | 接口归属地,用于控制结果只包含填写的归属地类型,支持关键字过滤,英文逗号分隔,不填写表示不指定归属地,建议使用靠近使用者的归属地,能提升播放体验 | |
| isp | 接口运营商,用于控制结果中只包含填写的运营商类型,支持关键字过滤,英文逗号分隔,不填写表示不指定运营商 | |
| origin_type_prefer | 结果偏好的接口来源,结果优先按该顺序进行排序,逗号分隔,例如: local,hotel,multicast,subscribe,online_search;local: 本地源,hotel: 酒店源,multicast: 组播源,subscribe: 订阅源,online_search: 关键字搜索;不填写则表示不指定来源,按照接口速率排序 | |
| local_file | 本地源文件路径 | config/local.txt |
| local_num | 结果中偏好的本地源接口数量 | 10 |
| subscribe_num | 结果中偏好的订阅源接口数量 | 10 |
| hotel_num | 结果中偏好的酒店源接口数量 | 10 |
| hotel_page_num | 酒店地区获取分页数量 | 1 |
| hotel_region_list | 酒店源地区列表,“全部”表示所有地区 | 全部 |
| multicast_num | 结果中偏好的组播源接口数量 | 10 |
| multicast_page_num | 组播地区获取分页数量 | 1 |
| multicast_region_list | 组播源地区列表,“全部”表示所有地区 | 全部 |
| online_search_num | 结果中偏好的关键字搜索接口数量 | 0 |
| online_search_page_num | 关键字搜索频道获取分页数量 | 1 |
| logo_url | 频道台标库地址 | |
| logo_type | 频道台标文件类型 | png |
| open_rtmp | 开启 RTMP 推流功能,需要安装 FFmpeg,利用本地带宽提升接口播放体验 | True |
| nginx_http_port | Nginx HTTP 服务端口,用于 RTMP 推流转发的 HTTP 服务端口 | 8080 |
| nginx_rtmp_port | Nginx RTMP 服务端口,用于 RTMP 推流转发的 RTMP 服务端口 | 1935 |
| rtmp_idle_timeout | RTMP 频道接口空闲停止推流超时时长,单位秒(s),用于控制接口无人观看时超过该时长后停止推流,调整此值能优化服务器资源占用 | 300 |
| rtmp_max_streams | RTMP 推流最大并发数量,用于控制同时推流的频道数量,数值越大服务器压力越大,调整此值能优化服务器资源占用 | 10 |
3. 更新结果
| 接口 | 描述 |
|---|---|
| / | 默认接口 |
| /m3u | m3u 格式接口 |
| /txt | txt 格式接口 |
| /ipv4 | ipv4 默认接口 |
| /ipv6 | ipv6 默认接口 |
| /ipv4/txt | ipv4 txt接口 |
| /ipv6/txt | ipv6 txt接口 |
| /ipv4/m3u | ipv4 m3u接口 |
| /ipv6/m3u | ipv6 m3u接口 |
| /content | 接口文本内容 |
| /log/result | 有效结果的日志 |
| /log/speed-test | 所有参与测速接口的日志 |
| /log/statistic | 统计结果的日志 |
| /log/nomatch | 未匹配频道的日志 |
RTMP 推流:
PUBLIC_DOMAIN环境变量为服务器域名或IP地址,PUBLIC_PORT环境变量为公网端口,否则推流地址无法访问config目录下新建hls文件夹,将以频道名称命名的视频文件放入其中,程序会自动推流到对应的频道中| 推流接口 | 描述 |
|---|---|
| /hls | 推流接口 |
| /hls/txt | 推流txt接口 |
| /hls/m3u | 推流m3u接口 |
| /hls/ipv4/txt | 推流ipv4 txt接口 |
| /hls/ipv4/m3u | 推流ipv4 m3u接口 |
| /hls/ipv6/txt | 推流ipv6 txt接口 |
| /hls/ipv6/m3u | 推流ipv6 m3u接口 |
| /stat | 推流状态统计接口 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务