Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HandBrake 批量转码工具

基于 HandBrakeCLI 的视频批量转码脚本。递归遍历源目录,保留目录结构,将视频批量转为指定容器格式。

脚本运行 输出目录结构
脚本运行 输出目录结构

💻 环境要求

  • Windows 64 位
  • HandBrakeCLI.exe(将 HandBrakeCLI.exe 放在本脚本同目录下,不存在时自动回退到系统安装路径 Program Files\HandBrake\)

📂 目录结构

脚本所在目录/
├── batch_handbrake.py      # 主脚本
├── HandBrakeCLI.exe        # HandBrakeCLI程序
├── *.json                  # HandBrake 预设文件(可选)
└── log/                    # 日志目录(自动创建)

🚀 快速开始

  1. 从 Releases 下载 batch_handbrake-<版本号>.py(或直接使用仓库内的 batch_handbrake.py)
  2. 运行脚本,按提示依次输入
python batch_handbrake.py

📑 参数说明:

参数 说明
预设* 拖入 JSON 预设文件路径,或输入 HandBrake 内置预设名(如 "H.265 MKV 1080p30")
并行数 1-8,默认 1;使用 NVENC/QSV 等硬件编码器时建议根据自身硬件性能调整
源目录 包含视频的文件夹,支持拖入路径,递归扫描子目录;也可直接拖入单个视频文件,此时仅转码该文件
输出目录 转码结果存放位置,目录结构自动对齐源目录;若输出目录位于源目录内,扫描时会自动排除输出目录下的文件
输出容器 选择容器格式:mp4 / mkv(默认 mp4)
  • 使用 JSON 预设时,请确保是从 HandBrake 官方软件导出的完整预设文件(含 PresetList 结构)。若提取预设名失败,该任务将报错并跳过。
  • 开始处理前会校验预设:从 JSON 提取预设名、与 HandBrakeCLI 预设列表比对、检查容器与预设输出格式是否一致,不一致时会在转码前提示确认。
  • 输出目录已存在同名成品时,会在开始处理前询问处理方式:1) 跳过(默认,可续转) / 2) 覆盖 / 3) 自动改名保留。
  • 输出与源文件重名时会自动改名(如 a.mkv 转 mp4 时与同目录源文件 a.mp4 冲突,输出为 a_1.mp4),原始素材不会被覆盖。

📁 输出结构

  • 转换前:
源目录/
├── 剧集/
│   ├── E01.mkv
│   └── E02.avi
└── 电影.mp4
  • 转换后:
输出目录/
├── 剧集/
│   ├── E01.mp4
│   └── E02.mp4
└── 电影.mp4

输出容器格式由用户手动选择(mp4 / mkv),示例以 mp4 为例。 若多个源文件映射到同一个输出名(如 E01.mkv 与 E01.avi),会自动改名,保留全部文件。

✨ 特性

  • 便携优先 — 优先使用脚本同目录的 HandBrakeCLI.exe,不存在时回退到系统安装路径
  • 输出防丢 — 转码先写入 *.hbpart.* 临时文件,成功后才原子改名为成品;失败只删除临时文件,最终路径不会出现半成品或损坏文件
  • 输出防覆盖 — 输出与任何源文件重名时自动改名,原始素材不会被成品覆盖
  • 断点续转 — 已存在的成品默认跳过,失败或中断后重跑同一配置即可续转
  • 重名预检 — 批量内输出重名时自动改名,保留全部文件
  • Ctrl+C 安全终止 — 中断时主动 kill 所有正在运行的 HandBrakeCLI 子进程,无残留孤儿进程
  • 精简日志 — 自动过滤秒级刷新的编码进度行,仅保留开始/结束标记和错误信息,日志轻量可读
  • 多线程并行 — 支持 1-8 个并行任务,充分利用多核/多卡资源
  • 灵活预设 — 支持从 HandBrake 导出的 JSON 预设文件,也支持 HandBrake 内置预设名

🎬 支持的输入格式

.mp4 .mkv .avi .mov .wmv .flv .m4v .ts .mts .m2ts .vob .webm .mpeg .mpg .3gp .asf .divx .rmvb .f4v

📝 注意事项

  • 输出容器格式由用户手动选择(mp4 / mkv),编码参数完全由预设决定
  • 请确保所选容器与预设的实际输出格式一致,否则文件扩展名与内容可能不匹配,部分播放器可能无法正常识别。
  • 输出目录位于源目录内时,扫描会自动排除输出目录下的文件,避免把成品当作源重复转码
  • 输出与源文件重名时会自动改名,原始素材不会被覆盖;重要素材请仍自行备份
  • 日志保存在脚本同目录 log/ 文件夹下,文件名格式 handbrake_YYYYMMDD_HHMMSS.log

免责声明

本项目为个人学习作品,部分逻辑及代码由 AI 辅助生成,不提供任何明示或暗示的保证,不建议在生产环境或未备份的重要数据上使用。使用前请务必备份原始数据,作者不对因使用本工具造成的任何数据丢失或损坏承担责任。


部分内容及代码由AI生成,请注意甄别
Vibe Coding with DeepSeek & AstrBot

About

基于 HandBrakeCLI 的视频批量转码脚本。递归遍历源目录,保留目录结构,将视频批量转为指定容器格式。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages