IPTV直播源测速工具IPTV-Speed-Tester

简介

什么是 IPTV-Speed-Tester ?

IPTV-Speed-Tester 是一个开源的 IPTV 直播源自动聚合、测速、过滤工具。它可以帮助用户从 API 接口获取公共 IPTV 主机,并发测速后保留高质量源,输出可直接导入播放器的 M3U8 / TXT 播放列表。

主要特点

  • 自动聚合测速:从 API 接口获取公共 IPTV 主机,并发测速,保留高质量源
  • 订阅源支持:支持导入自定义订阅(M3U / TXT 格式均可),最多支持 20 个订阅源
  • 频道名清洗:自动清洗频道名(CCTV 别名统一、卫视排序等)
  • 速度分级输出:按速度分级(高速 ≥5 MB/s / 普通 ≥1 MB/s / 低速)分组输出
  • 定时自动更新:定时自动更新,HTTP 接口实时提供播放列表
  • 高性能低内存:全程异步并发(Tokio),比 Go 版内存占用更低

应用场景

  • 家庭影院:自动筛选高质量 IPTV 源,提升观看体验
  • NAS 用户:部署在群晖等 NAS 设备上,为家庭提供稳定的直播源服务
  • 订阅源管理:整合多个订阅源,自动测速过滤,输出最优播放列表

IPTV-Speed-Tester 是一个能够显著提升 IPTV 观看体验的实用工具,特别适合需要管理多个订阅源的用户。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 evecus,下拉找到 evecus/iptv,版本选择 latest

本文写作时,latest 版本对应为 v1.0.4,但本文发布时已经是 v1.0.5

目前看 v1.0.5 还有问题,日志中显示有错误,镜像是 Github Action 自动构建的,等版本稳定发布吧

1
2
3
4
5
error: unexpected argument '--interval' found

Usage: iptv <--port <PORT>|--workers <WORKERS>|--top <TOP_N>|--cron <CRON>|--timezone <TIMEZONE>|--url1 <URL1>|--url2 <URL2>|--url3 <URL3>|--url4 <URL4>|--url5 <URL5>|--url6 <URL6>|--url7 <URL7>|--url8 <URL8>|--url9 <URL9>|--url10 <URL10>|--url11 <URL11>|--url12 <URL12>|--url13 <URL13>|--url14 <URL14>|--url15 <URL15>|--url16 <URL16>|--url17 <URL17>|--url18 <URL18>|--url19 <URL19>|--url20 <URL20>>

For more information, try '--help'.

docker 文件夹中,创建一个新文件夹 iptv-speed-tester,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/iptv-speed-tester/data /app/data 存放数据、缓存和自定义频道列表

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
3230 3030

环境

可变
PORT 3030
WORKERS 20
TOP 5
INTERVAL 6h
URL1 自定义订阅源地址(可选)

如果没有自定义订阅源,保持默认即可

环境变量说明

  • PORT:容器内 HTTP 监听端口,默认 3030,一般无需修改
  • WORKERS:并发测速数,默认 20,可根据服务器性能调整
  • TOP:每个频道类型保留的最优源数量,默认 5
  • INTERVAL:自动更新间隔,默认 6h,支持格式如 6h30m3600s
  • URL1~`URL20:自定义订阅源地址,最多支持 20` 个

命令行安装

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 新建文件夹 iptv-speed-tester 和 子目录
mkdir -p /volume1/docker/iptv-speed-tester/data

# 进入 iptv-speed-tester 目录
cd /volume1/docker/iptv-speed-tester

# 运行容器
docker run -d \
--name=iptv-speed-tester \
--restart=unless-stopped \
-p 3230:3030 \
-v $(pwd)/data:/app/data \
-e PORT=3030 \
-e WORKERS=20 \
-e TOP=5 \
-e INTERVAL=6h \
-e URL1=https://iptv-org.github.io/iptv/index.m3u \
evecus/iptv:v1.0.4

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: "3"

services:
iptv-speed-tester:
# image: evecus/iptv:latest
image: evecus/iptv:v1.0.4
container_name: iptv-speed-tester
restart: unless-stopped
ports:
- "3230:3030" # 主机端口:容器端口
volumes:
- ./data:/app/data # 数据持久化
environment:
- PORT=3030 # 容器内端口
- WORKERS=20 # 并发测速数
- TOP=5 # 每类型保留最优源数
- INTERVAL=6h # 自动更新间隔
# 可选:订阅源地址(最多 URL20)
# - URL1=http://your-subscribe-url-1
# - URL2=http://your-subscribe-url-2

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 iptv-speed-tester 和 子目录
mkdir -p /volume1/docker/iptv-speed-tester/data

# 进入 iptv-speed-tester 目录
cd /volume1/docker/iptv-speed-tester

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中访问 http://<群晖IP>:3230/iptv 即可获取 M3U8 播放列表。

第一次需要检测,在检测结束前访问会显示提示

1
Not ready yet. Please wait for the first scan.

http://<群晖IP>:3230/iptv 导入 Potplayer 可以直接播放

HTTP 接口说明

路径 说明
//iptv M3U8 播放列表
/txt TXT 格式播放列表(逗号分隔)
/status JSON 状态(运行状态 / 上次更新时间)
/retest 立即触发重新测速(异步,不阻塞)

使用流程

  1. 访问 http://<群晖IP>:3230/status 查看运行状态
  2. 访问 http://<群晖IP>:3230/iptv 获取 M3U8 播放列表
  3. 将播放列表导入 IPTV 播放器(如 VLCPotplayer 等)
  4. 如需立即更新,访问 http://<群晖IP>:3230/retest 触发重新测速

自定义频道列表

以下两个文件是可选的高级配置,放在 data 目录中即可生效,文件不存在时程序会跳过,不影响其他功能。

文件 说明
channel_list.txt 标准频道名列表,用于名称统一
hsmd_address_list.txt 和事猫 TV 频道地址列表

文件格式由 AI 根据代码推测


channel_list.txt(频道名统一映射)

用途:将不同来源的别名映射到标准名称,例如 “cctv 1”、”CCTV-1” 统一为 “CCTV1”。

格式:每行一个标准频道名即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CCTV1
CCTV2
CCTV3
CCTV4
CCTV5
CCTV5+
CCTV6
CCTV7
CCTV8
CCTV9
CCTV10
CCTV11
CCTV12
CCTV13
CCTV14
CCTV15
CCTV16
CCTV17
湖南卫视
东方卫视
浙江卫视
江苏卫视
北京卫视

提示:如果列表中不包含某个频道名,程序会保持原始名称输出,不会报错。你只需列出关心的频道即可。


hsmd_address_list.txt(和事猫 TV 地址列表)

用途:配合和事猫 TV 的动态主机测速使用。文件中记录每个频道的播放路径模板,测速后自动替换为最优主机地址。

格式:每行包含一个 http:// 开头的完整 URLURL 前的文本作为频道名。

支持的格式示例

1
2
3
4
5
CCTV1 http://192.168.1.1/newlive/live/hls/1/live.m3u8
CCTV2 http://192.168.1.1/newlive/live/hls/2/live.m3u8
CCTV3 http://192.168.1.1/newlive/live/hls/3/live.m3u8
1 CCTVA(默认频道)http://192.168.1.1/newlive/live/hls/4/live.m3u8
CCTV13 高清 http://192.168.1.1/newlive/live/hls/13/live.m3u8

核心机制

  • 提取行中的 http://... 地址
  • URL 前的文本作为频道名(自动去除行首数字编号和 (默认频道) 标记)
  • 测速后,只替换 URL 中的主机部分,保留路径不变
  • 例如:http://192.168.1.1/newlive/live/hls/1/live.m3u8 → 测速发现最优主机 fast-host.com → 最终生成 http://fast-host.com/newlive/live/hls/1/live.m3u8

提示注意**:此文件是专为和事猫 TV 等需要动态选主机的服务设计的。普通用户使用 URL1~`URL20` 订阅源即可,无需准备此文件。

注意事项

  1. 端口映射:本文使用 3230 端口,请确保与主机其他服务不冲突
  2. 订阅源格式:支持 M3UTXT 格式的订阅源,确保订阅地址可访问
  3. 测速频率:默认 6 小时自动更新一次,可通过 INTERVAL 环境变量调整
  4. 数据持久化:建议将 /app/data 目录挂载到主机,避免容器重启后数据丢失
  5. 性能建议WORKERS 参数可根据服务器性能调整,过高可能导致测速不准确

参考文档

evecus/IPTV-Speed-Tester: IPTV Speed Tester(Rust 版)
地址:https://github.com/evecus/IPTV-Speed-Tester

evecus/iptv - Docker Image | Docker Hub
地址:https://hub.docker.com/r/evecus/iptv

suxuang/myIPTV: 【典藏版】高清直播源涵盖几乎所有卫视节目,内置完美台标加节目预告
地址:https://github.com/suxuang/myIPTV/