IPTV流嗅探工具,用于批量测试IPTV流地址的可用性,支持自动截图、频道管理和AI识别。
- 按分组筛选
- 按分辨率筛选(4K/1080p/720p)
- 按连通性筛选(在线/离线)
- 按IP或频道名搜索
docker run -d \
--name iptv-sniffer \
--device /dev/dri:/dev/dri \
-p 9833:9833 \
-v $(pwd)/screenshots:/app/screenshots \
-v $(pwd)/config:/app/config \
thsrite/iptv-sniff:latest访问 http://localhost:9833 即可使用。
- 安装依赖:
pip install -r requirements.txt- 确保已安装FFmpeg:
# Ubuntu/Debian
apt-get install ffmpeg
# macOS
brew install ffmpeg- 运行应用:
python main.py访问 http://localhost:9833 即可使用。
在"Stream Test"标签页中:
- 输入基础URL,使用
{ip}作为IP地址的占位符- 例如:
http://192.168.2.2:7788/rtp/{ip}:8000
- 例如:
- 输入起始IP和结束IP
- 例如:
111.111.111.1到111.111.111.255
- 例如:
- 点击"Start Test"开始测试
测试结果会显示:
- 实时测试进度
- 自动截图
- 分辨率信息
- 筛选功能(全部/成功/失败,4K/1080p/720p)
在"TV Channels"标签页中可以:
- 导入M3U:从现有M3U文件导入频道列表
- AI识别:使用AI模型自动识别频道名称
- 连通性测试:批量测试所有频道的连通性
- 编辑频道信息:
- 频道名称
- Logo(点击Logo可编辑URL)
- TVG ID
- 分组
- 筛选和搜索:
- 按分组筛选
- 按分辨率筛选
- 按连通性筛选
- 按IP或频道名搜索
- 导出M3U:导出完整的M3U播放列表
在"TV Groups"标签页中可以:
- 创建新分组
- 重命名/删除分组
- 拖拽调整分组顺序
- 向分组添加频道
- 从分组移除频道
在"Advanced Settings"标签页中可以配置:
FFmpeg设置
- 超时时间
- 并发队列大小
- 自定义FFmpeg参数(如硬件加速)
AI模型配置
- 启用/禁用AI识别
- AI API URL
- API密钥
- 模型名称(支持GPT-4 Vision、Claude 3等)
常用硬件加速配置:
- Intel Quick Sync (VAAPI):
-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi - NVIDIA GPU:
-hwaccel cuda -hwaccel_output_format cuda
# 开始测试
POST /api/test/start
Content-Type: application/json
{
"base_url": "http://192.168.3.2:7788/rtp/{ip}:8000",
"start_ip": "111.111.111.1",
"end_ip": "111.111.111.256"
}
# 获取测试状态
GET /api/test/status/{test_id}
# 重试测试
POST /api/test/retry# 获取所有频道
GET /api/channels
# 更新频道信息
POST /api/channels/update
Content-Type: application/json
{
"ip": "111.111.111.1",
"name": "CCTV-1",
"logo": "http://example.com/logo.png",
"tvg_id": "CCTV1"
}
# 测试连通性
POST /api/channels/test-connectivity
# 导入M3U
POST /api/channels/import-m3u
# 导出M3U
GET /api/channels/export-m3u# 获取所有分组
GET /api/groups
# 创建分组
POST /api/groups/create
# 更新分组
POST /api/groups/update
# 删除分组
POST /api/groups/delete# 获取配置
GET /api/config
# 保存配置
POST /api/config- 后端:Python + Flask
- 前端:HTML + CSS + JavaScript
- 视频处理:FFmpeg(支持硬件加速)
- AI识别:OpenAI/Anthropic等多模态模型
- 数据存储:JSON文件
- 容器化:Docker
iptv-sniff/
├── main.py # Flask后端主程序
├── index.html # 前端页面
├── static/
│ ├── style.css # 样式文件
│ ├── script.js # 前端逻辑
│ └── languages.js # 多语言配置
├── screenshots/ # 截图存储目录
├── config/ # 配置文件目录
├── requirements.txt # Python依赖
├── Dockerfile # Docker镜像构建文件
tv_channels.json: 频道数据库tv_groups.json: 分组信息results.json: 测试结果config/config.json: 系统配置screenshots/: 截图文件
PORT: 服务端口(默认:9833)PYTHONUNBUFFERED: 禁用Python输出缓冲(默认:1)
- 如果需要使用硬件加速,确保Docker容器可以访问相应的硬件设备(如
/dev/dri) - AI识别功能需要配置有效的API密钥
- 并发测试数量有限制(默认最多5个并发),可在高级设置中调整
- 筛选条件和标签页状态会自动保存到localStorage
- M3U导出会按照频道列表当前的排序和筛选条件
Q: 如何使用AI识别频道? A: 在高级设置中配置AI API URL和密钥,然后在频道页面点击"AI识别频道"按钮。
Q: 支持哪些AI模型? A: 支持所有兼容OpenAI Vision API格式的模型,包括GPT-4 Vision、Claude 3等。
Q: 如何导入现有的M3U文件? A: 在频道页面点击"导入M3U"按钮,选择M3U文件即可自动导入所有频道信息。
Q: 频道连通性测试失败怎么办? A: 检查网络连接和URL是否正确,可以在高级设置中增加超时时间。
MIT License