config.json统一配置文件说明
qiepian 的切片管线由这一个文件统一调度 —— main.py、qie.py、auto.py、web.py、tg.py 都从这里读取参数。改这一个文件即可,不用改代码。
本文件包含敏感凭据,请勿外传或提交到公开仓库。
涉及 mysql.password、telegram.bot_token、telegram.secret、parse_api.key。
加载方式
config.py 在启动时读取一次 config.json,把每一项转成 config.XXX 常量供各模块使用。
相对路径
如 downloads、ffmpeg/ffmpeg.exe,都按项目根目录解析成绝对路径。
注释字段
每个区块里的 _comment 只给人看,代码会忽略它。
m3u8 播放器测试工具
粘贴一个 playlist.m3u8 链接,直接试播切片结果。
Chrome / Edge 通过 hls.js 播放,需要服务器对 .m3u8 与 .ts 返回 CORS 响应头(Access-Control-Allow-Origin);Safari 原生播放则无需 CORS。
paths路径
| 键 | 默认值 | 说明 |
|---|---|---|
| downloads_dir | downloads | 视频下载目录(下载的视频先放这里) |
| slices_dir | _slices | 切片输出目录(切好的 HLS 分片放这里) |
| links_json | links.json | 链接记录 JSON 文件,保存「片名 → 页面/直链/播放地址」的映射 |
| m3u8dl | bin/m3u8.exe | m3u8 下载器(N_m3u8DL)可执行文件路径 |
| ffmpeg | ffmpeg/ffmpeg.exe | ffmpeg 可执行文件路径 |
| ffprobe | ffmpeg/ffprobe.exe | ffprobe 可执行文件路径 |
parse_api视频解析接口
| 键 | 说明 |
|---|---|
| key | 解析接口的密钥(接口需要鉴权时填,留空则不传) |
| url | 解析接口地址,main.py 用它把页面链接解析成直链 |
search_api搜索接口
| 键 | 说明 |
|---|---|
| url | 搜索接口地址(auto.py 按关键词搜片) |
| params | 固定附加的查询参数(如 { "ac": "videolist", "h": "i" }) |
upload上传
| 键 | 默认值 | 说明 |
|---|---|---|
| ts_url | — | 上传单个 .ts 分片的接口地址 |
| m3u8_url | — | 上报 playlist.m3u8 播放列表的接口地址 |
| fake_png | true | 是否把 .ts 伪装成 PNG 上传(在数据前塞 PNG 文件头,绕某些图床/上传限制) |
| ts_response | url | ts 上传接口返回的 URL 字段路径。点路径如 "data.url";"@body" 表示接口直接回传 url 文本 |
| m3u8_response | url | m3u8 接口返回的 URL 字段路径,规则同上 |
ts_response / m3u8_response 例子:接口返回 {"code":0,"data":{"url":"http://..."}} 就填 "data.url";接口直接回 http://... 文本就填 "@body"。
mysqlMySQL 数据库
切片完成并上传后,把资源记录写入数据库。
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | false | 是否启用 MySQL 入库 |
| host | — | 数据库地址 |
| port | 3306 | 端口 |
| user | — | 用户名 |
| password | — | 密码 |
| database | — | 库名 |
| table | ls_resources | 写入的表名 |
download下载参数
| 键 | 默认值 | 说明 |
|---|---|---|
| user_agent | — | 下载时用的 User-Agent |
| max_threads | 32 | 下载并发线程数上限(传给 m3u8 下载器,字符串) |
| min_threads | 16 | 下载并发线程数下限 |
| retry_count | 15 | 下载失败重试次数 |
| time_out | 10 | 下载超时时间(秒) |
| download_timeout | 1800 | 下载停滞超时(秒):连续 N 秒 0 速度就判定卡死、跳到下一个播放器;0 表示不限时 |
slice切片参数
| 键 | 默认值 | 说明 |
|---|---|---|
| segment_seconds | 10.0 | 每个 HLS 分片的时长(秒) |
| upload_threads | 4 | 上传分片的并发线程数 |
watermark水印 / 片头字幕
本项目最核心的一块,有三档工作模式,按优先级从高到低。
片头出处字幕:只烧片头前 N 秒,其余分片 -c copy 流复制(最快)
间歇水印:每 N 个分片出现 1 段水印(单遍重编码,无拼接卡顿)
全程水印:整条视频都烧水印
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | false | 总开关。false 则完全不加水印/字幕,直接 -c copy 快速切片 |
| text | 空 | 水印/字幕文字(如「啄木鸟影视」) |
| fontfile | C:/Windows/Fonts/msyh.ttc | 字体文件路径(微软雅黑,支持中文) |
| fontsize | 26 | 字号(像素) |
| fontcolor | white | 文字颜色:颜色名(white/black/red…)或 #RRGGBB |
| alpha | 0.4 | 文字透明度,0=全透明、1=不透明 |
| x | w-text_w-20 | 文字横向位置表达式(见下方说明) |
| y | h-text_h-20 | 文字纵向位置表达式 |
| borderw | 1 | 描边宽度(像素),0 表示不描边 |
| bordercolor | black | 描边颜色 |
| encoder | libx264 | 视频编码器:libx264(软件)、qsv(Intel 核显硬编)、mf(Windows 硬编) |
| preset | veryfast | 编码预设(libx264 用,越快越省时但文件越大) |
| crf | 23 | 画质(libx264/qsv 用,越小越清晰、文件越大) |
| bitrate | 3000k | 目标码率(mf 编码器用) |
| every_n | 0 | 间歇水印:每 N 个分片出现 1 段;0 或 1 = 全程烧 |
| start_seconds | 0 | 片头出处字幕:>0 时只烧片头前 N 秒,其余 -c copy(优先于 every_n) |
位置表达式说明(x / y)
webWeb 服务
| 键 | 默认值 | 说明 |
|---|---|---|
| host | 0.0.0.0 | Flask 服务监听地址(0.0.0.0 = 允许外部访问) |
| port | 5000 | 服务端口 |
telegram通知
切片完成并替换后推送通知。
| 键 | 默认值 | 说明 |
|---|---|---|
| enabled | false | 是否启用通知 |
| relay_url | 空 | 香港 tg.php 转发接口地址(优先走它,免代理) |
| secret | 空 | tg.php 接口口令 |
| broadcast | false | true = 群发给所有订阅者(/start 过的用户);false = 只发到 chat_id |
| bot_token | 空 | 直连回退用的 Bot Token(relay 不可用时用) |
| chat_id | 空 | 频道/聊天 ID(如 @频道名 或数字 ID) |
video_exts视频扩展名
| 键 | 默认值 | 说明 |
|---|---|---|
| video_exts | [".mp4", ".ts", ".mkv", ".mov", ".flv", ".avi", ".m4v"] | 程序识别为「视频文件」的扩展名列表,其它扩展名的文件会被忽略 |
改配置后如何生效
改完 config.json 保存后,重启对应进程(main.py / web.py 等)即可,因为 config.py 只在启动时读一次配置。正在跑的任务不会实时刷新。