简体中文
处理器参考
编辑工作流或任务预设时选择处理器。完整示例见创建工作流。
内置处理器 (Processors)
每个管道步骤由一个专门的处理器执行:
| 处理器 ID | 功能 | 核心参数 |
|---|---|---|
remux | 更改容器格式,也可选择重新编码 | format, video_codec, audio_codec |
danmaku_factory | 弹幕转换 | output_format (ass) |
ass_burnin | 将字幕硬烧录进视频 | 处理器预设配置 |
thumbnail | 从视频中提取画面作为图片 | timestamp_secs, width, quality, preserve_resolution |
audio_extract | 提取音轨 | format, bitrate, sample_rate |
compression | 将文件打包为 ZIP 或 tar.gz 归档 | format, compression_level, output_path, overwrite, preserve_paths |
rclone | 云端同步 | destination_root, operation, time_anchor, args |
baidupcs | 通过 BaiduPCS-Go 上传到百度网盘 | destination_root, policy, norapid, time_anchor, args |
copy_move | 复制或移动本地文件 | 目标路径与操作设置 |
metadata | 写入元数据(nfo, json) | - |
delete | 自动清理中间文件 | - |
execute | 运行程序或自定义 Shell 命令 | program, args 或 command, scan_output_dir, scan_extension |
执行程序(execute)
在预设编辑器或工作流步骤的配置对话框中,通过执行模式选择 Shell 命令或程序和参数。已有 Shell 命令会保持原样,以 Shell 模式打开。切换模式会清空原有命令或程序及参数;输出扫描设置由两种模式共用并保留。
在程序模式下,在程序中填写可执行文件,按顺序使用添加参数逐项输入。每个文本框代表一个完整参数,可包含空格、引号、换行或空字符串。删除文本框才会省略该参数;留空会传入空参数。保存时只包含所选模式的字段。
使用 program 和 args 可以直接运行可执行程序,无需经过 Shell:
json
{
"program": "ffmpeg",
"args": ["-nostdin", "-n", "-i", "{input}", "-c", "copy", "/recordings/converted/{streamer}_%Y%m%d_%H%M%S.mp4"],
"scan_output_dir": "/recordings/converted",
"scan_extension": "mp4"
}工作流步骤不会收到输出路径,因此 {output}、{outputN} 和 {outputs_json} 在工作流中为空。请在参数里指定文件名,并设置 scan_output_dir(支持相同的占位符),新文件就会传递给下一步:命令开始前目录中不存在、且在命令开始后修改过的文件即为该步骤的输出。未设置扫描目录时,输入会原样传递。该步骤的文件大小指标和成功输入列表覆盖它收到的所有输入及检测到的所有输出;扫描目录无法读取时,步骤会失败,而不是报告没有输出。
program 是 PATH 中的固定可执行程序名或可执行文件路径,不展开占位符。args 中每一项都是一个参数,空字符串也会保留。参数支持与 command 相同的文件、元数据、JSON 数组和时间占位符。在配对分段和会话完成管道中,{manifest_json} 展开为会话配对的 JSON(按分段记录每个视频对应的弹幕文件);其他管道中展开为 null。插入的取值保持原样:引号、空格、Shell 运算符、环境变量引用及取值内的其他占位符都不会被解释。不要在参数外额外添加 Shell 引号。被调用的程序仍会按自身规则解释选项。
省略 args 表示不传入参数。program(可带 args)与 command 只能选择一种,混用会使步骤失败。在 Windows 上,program 拒绝 .bat 和 .cmd 文件,因为 Windows 会隐式通过 Shell 运行它们;批处理脚本请使用 command。两种模式均保留输出目录扫描、管道输出处理、超时和进程清理行为。
Shell 语法取决于服务器的操作系统,与浏览器的操作系统无关。例如,ffmpeg -nostdin -n -i {input} -c copy {input}.mp4 使用固定原生可执行程序及占位符参数;服务器已安装 FFmpeg 时,该示例符合两个平台所支持的模板语法。
不含已识别占位符的命令模板保留原有 Shell 行为。含占位符时,编译器只接受明确限定的语法,通过进程局部绑定传递替换数据。占位符可用于普通参数单词或文件重定向目标,命令名必须固定。未知和越界占位符保持字面文本。未加引号的空值不产生参数,已有引号会保留空参数;空重定向路径在启动前报错。
| 含占位符的模板 | 支持的结构 |
|---|---|
| POSIX | 未引用、单引号和双引号中的参数片段;;、LF 换行、&&、` |
| Windows | 固定的原生可执行程序名或路径;带引号或不带引号的参数片段;&、&&、` |
含占位符的模板会在启动前拒绝命令替换、算术、参数展开、here-document、命令分组、前置变量赋值、命令名展开(包括 POSIX 花括号形式)和嵌套 Shell 包装命令。
Windows 还拒绝管道、多行模板、批处理脚本、含占位符的内置命令阶段、模板中的字面 %/!/^ 字符、替换单词中的控制字符,以及含义不明确的字面引号和反斜杠组合。这些模板字符限制也适用于引号内;请把这类数据放入 args 或占位符取值。
Windows 先组装完整参数,再按常见 C 风格及 Shell32 解析器的反斜杠引号规则编码。使用自定义参数解析器的程序必须接受这种编码;请遵循被调用程序的参数或数据接口要求。重定向文件名使用独立规则,不能含双引号。
固定 Windows 原生路径允许 RUNNER~1 等 8.3 别名和字面方括号,但仍不支持通配符程序名及扩展 \\?\ 命名空间路径。含取值的 Windows 命令会在启动前按 cmd 的 8,191 个 UTF-16 单元限制检查:每个继承绑定、生成命令及保守估算的展开命令都必须符合限制,并为启动器保留 32 个单元。因此,大型 JSON 数组可能需要改用 program/args 或文件数据接口。
不支持的形式请改用 program 与 args,或使用具有明确参数/数据接口的固定脚本。不要把不可信取值放进被调用程序的代码或表达式参数中;程序仍会按自身规则解释选项。
归档(compression)
compression 处理器把输入文件打包成一个归档文件。它不会重新编码媒体,文件按原样放入归档。
| 配置项 | 说明 | 默认值 |
|---|---|---|
format | zip 或 targz(gzip 压缩的 tar) | zip |
compression_level | 0–9。0 表示不压缩——zip 为仅存储条目,targz 为不压缩的 gzip 流——对已经压缩过的视频来说通常是更合适的选择。大于 9 的取值不会被收敛,而是让步骤直接失败。 | 6 |
output_path | 要写入的归档路径。省略时根据第一个输入推导:同一目录、同一文件名,把输入的扩展名换成对应格式的扩展名,因此 /rec/video.flv 得到 /rec/video.zip。 | 自动推导 |
overwrite | 覆盖该路径上已存在的归档。设为 false 时步骤会直接失败。 | true |
preserve_paths | 在归档内按输入文件的完整路径存放(去掉开头的分隔符):/srv/recordings/x/a.mp4 对应的条目是 srv/recordings/x/a.mp4。路径不会相对某个公共前缀截断。设为 false 时,所有条目都以文件名平铺在归档根目录。 | false |
该处理器支持批量输入,因此一个从依赖步骤收到多个文件的步骤会生成一个包含全部文件的归档。它的输出只有归档路径——输入文件不会被删除,而依赖它的 delete 步骤删除的是归档本身,而不是源文件。
两个输入若会存为同一个归档条目(通常是关闭 preserve_paths 时来自不同目录的同名文件),会在写入任何归档之前被拒绝。请开启 preserve_paths 或重命名其中一个。
ZIP 条目始终按 ZIP64 尺寸写入,因此单个超过 4 GiB 的录制文件也能正确打包。代价是每个条目多 40 字节,生成的归档仍可用常规 ZIP 工具打开。
百度网盘(baidupcs)
baidupcs 处理器通过外部 BaiduPCS-Go 命令行工具将录像上传到百度网盘(Docker 镜像已内置;裸机部署需自行安装,若不在 PATH 中可通过 BAIDUPCS_PATH 指定路径)。
- 登录:在网页端打开任意
baidupcs预设,通过账号卡片粘贴 Cookie 字符串(推荐)或 BDUSS + STOKEN 登录。凭据交给 BaiduPCS-Go 处理,登录会话保存在它的配置目录(BAIDUPCS_GO_CONFIG_DIR)中;卡片同时显示当前账号和网盘容量。勾选记住凭据以便自动重新登录后,凭据也会保存在服务器上(明文,与平台 Cookie 相同):登录会话过期时,上传任务会在首次尝试前检查登录状态、并在重试前再补一次登录,无需人工干预。如果重放的登录被拒绝(通常是修改密码导致会话令牌失效),会发出高优先级的baidupcs_relogin_failed通知,并在一小时内暂停后续尝试——失效凭据只产生一条提醒,而不是每个任务都白白请求一次百度。退出登录会一并清除保存的凭据。 - 目标路径:
destination_root支持{streamer}、{title}及时间占位符,始终解析为网盘的绝对路径。不存在的文件夹会在上传时自动创建。 - 重试:BaiduPCS-Go 的退出码无法反映上传结果,rust-srec 会解析其逐文件输出来判定成败。无论是运行内重试还是手动重试任务,都只会重新上传尚未确认结果的文件;配合默认的
skip策略和秒传检测,部分失败后的重试开销很小。批量上传中部分文件失败时,步骤会失败,并按文件分别记录结果(已上传、已跳过或失败)。由于所有文件都直接放在目标文件夹下,文件名相同的两个输入会在上传前被拒绝。被百度直接拒绝的文件(文件名不合法、超过大小限制、无法读取或容量已满)会记为失败,后续尝试不会再重新上传。大批量文件会拆成多次 BaiduPCS-Go 调用上传,使命令行长度不超过平台限制;上传前的登录检查不会写入任务日志。 - 限制:单文件超过 128 GB 会被百度拒绝;传输中断后只能从头重传(BaiduPCS-Go v4 已不支持断点续传)。由于该工具的本地状态存储不支持并发写入,上传任务同一时间只运行一个 BaiduPCS-Go 进程;任务运行期间也请勿手动对同一配置目录执行 BaiduPCS-Go 命令。
登录使用 BaiduPCS-Go v4.0.1 的标准输入命令接口, 并在私有目录中操作标准 pcs_config.json 的副本,避免 Cookie、BDUSS 和 STOKEN 出现在进程参数中。私有目录内会阻止 CLI 打开命令历史路径,因此登录命令不会 保存到历史记录。成功后只更新原配置中的当前账号及所选 UID;登录被拒绝时, 原配置保持不变。提交前检查原始字节时,如果发现外部改动,则拒绝覆盖。 外部 CLI 或配置写入程序不受后端锁保护,因此不能同时运行。
自定义程序必须支持相同的无参数命令接口、env 配置目录输出及标准账号配置格式。 不兼容的程序会返回错误,绝不会退回通过命令行参数传递凭据。登录子进程保持 六十秒截止时间(包含标准输入写入),强制清理最多额外等待五秒。请求取消后, 仍会保留账号锁直到清理完成。粘贴的凭据不能包含换行或 NUL 字符。