# 自动转码
自动转码是指在每段录制完成后,自动调用 ffmpeg 把录制文件转换成你需要的格式/编码(例如统一转成 H.264 编码的 MP4,方便剪辑或二次开发)。适合对录制文件有明确编码、封装、体积要求的进阶用户。
# 这是什么、和时间轴修复是什么关系
DDTV 在每段录制完成后会执行一次 ffmpeg 处理,执行的参数由配置项 AutomaticRepair_Arguments 决定:
- 默认参数是
-y -i "{before}" -c copy "{after}",只做转封装 + 时间轴修复(详见时间轴修复),不重新编码; - 把这段参数改成带编码选项的 ffmpeg 参数,这一步就变成了真正的转码。
也就是说"时间轴修复"和"自动转码"是同一个开关、同一个流程,区别只在你填的参数。
# 怎么开启
配置文件 ./Config/DDTV_Config.ini(也可在 Desktop 设置页 / WEBUI 设置中修改):
| 配置项 | 默认值 | 说明 |
|---|---|---|
AutomaticRepair | true | 总开关,true 时每段录制完成后自动执行 |
AutomaticRepair_Arguments | -y -i "{before}" -c copy "{after}" | 执行的 ffmpeg 参数,{before} 会被替换为源文件路径、{after} 替换为输出文件路径 |
DeleteOriginalFileAfterRepair | true | 转码成功后删除源文件 |
TranscodeFileDifference | 0.05 | 输出文件允许比源文件小的最大比例(默认 5%),小得更多时判定异常并保留源文件 |
UsingCustomFFMPEG | 空 | 自定义 ffmpeg 路径,如 D:/tools/ffmpeg.exe |
ffmpeg 查找顺序(Windows):UsingCustomFFMPEG → ./Plugins/ffmpeg/ffmpeg.exe → ./Plugins/Plugins/ffmpeg/ffmpeg.exe;Linux/macOS 使用系统 PATH 中的 ffmpeg,需自行安装。
# 参数怎么写
参数中的两个占位符:
{before}:录制完成的源文件(xxx_original.mp4或xxx_original.flv){after}:输出文件,固定为xxx_fix.mp4
示例 1:转成 H.264 + AAC 的通用 MP4(适合剪辑软件兼容性要求高的场景):
-y -i "{before}" -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 192k "{after}"
示例 2:视频直接复制、只把音频转成 AAC(快,体积几乎不变):
-y -i "{before}" -c:v copy -c:a aac "{after}"
# 注意事项
WARNING
- 输出扩展名固定为
_fix.mp4,所以参数里请不要输出非 MP4 封装格式(如 MKV),否则文件名与实际封装不符。 - 转码是逐段进行的:如果开启了自动切割,每个分段录制完成后都会各自转码一次。
- 真正的转码(重新编码)比较吃 CPU,长时间录制结束后转码会持续一段时间,低配机器(尤其是 NAS、软路由)请评估性能,或改用
-c:v copy类的轻量参数。 - 转码后文件比源文件小超过
TranscodeFileDifference的比例时,会判定结果异常而保留源文件。压缩率较高的转码参数(如高 CRF)很容易触发这个保护,建议把TranscodeFileDifference调大(如0.5)或关闭DeleteOriginalFileAfterRepair。 - 转码失败时会在源文件旁生成
xxx_fix日志.log(ffmpeg 完整输出),配置了邮件通知时会收到失败提醒邮件。