handbrake本身不支持视频合并,需通过队列统一转码后用ffmpeg拼接,或先用ffmpeg虚拟拼接再交handbrake压制,也可用handbrakecli配合批处理脚本实现全自动压制与合并。

你需要把拍摄的多个分段视频(比如运动相机录下的10段3分钟文件)合成一个完整视频,但HandBrake主界面找不到“合并”按钮,也不能直接拖入多个文件一键拼接——它本身不提供原生合并功能,必须通过队列转码+外部拼接,或预拼接再压制两种路径实现。
用HandBrake队列统一转码后拼接
这一步适合你手头多个格式、参数接近但不完全一致的视频,比如不同时间拍的MP4片段,需要先统一编码再无损连接。关键在于所有输出文件必须【编码器、分辨率、帧率、容器格式四者完全相同】,否则FFmpeg拼接时会报错或播放卡顿。
启动HandBrake → 点击【File】→【Open File】导入第一个视频。
在右侧【Presets】中选“Fast 1080p30”,然后切到【Video】标签页,手动确认【Encoder】为H.264(x264)、【Framerate】为Same as source、【Resolution】未被缩放——这些参数一旦设错,后续所有文件都得重来。
点击【Browse】设置输出路径,命名为“clip_01.mp4”,再点【Add to Queue】。
重复前两步:导入第二个视频 → 不改任何参数 → 输出名改为“clip_02.mp4” → 【Add to Queue】。注意队列列表里的顺序就是最终拼接顺序,拖动条目可调整。
全部加完后,点击右下角【Start Queue】开始批量转码。等状态栏显示“Queue completed”,说明所有clip_xx.mp4已生成完毕。
打开记事本,输入以下三行(每行顶格,末尾无空格):
file 'clip_01.mp4'
file 'clip_02.mp4'
file 'clip_03.mp4'
保存为filelist.txt,与所有clip文件放在同一文件夹。
按Win+R输入cmd回车 → 输入cd /d "你的视频所在文件夹路径" → 回车 → 执行命令:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy final.mp4
先用FFmpeg拼接再交HandBrake压制
当你对画质有更高要求,或原始片段编码差异大(比如混着AVI和MKV),推荐这条路径:跳过中间文件,用FFmpeg虚拟拼接后,只让HandBrake做一次最终压制,避免双重编码损伤。
方法一:生成绝对路径拼接列表
新建文本文件,用记事本编辑,每行写:file 'D:\raw\part1.mp4'(单引号不能省,路径必须是绝对路径,不能用相对路径或中文括号)。
方法二:快速生成列表(Windows PowerShell)
在视频文件夹空白处按住Shift+右键 → 选择“在此处打开PowerShell窗口” → 输入:
Get-ChildItem *.mp4 | ForEach-Object { "file '$($_.FullName)'" } | Set-Content merge_list.txt
执行FFmpeg拼接命令:
ffmpeg -f concat -safe 0 -i merge_list.txt -c:v copy -c:a copy temp.mkv
【注意:此命令不转码,仅封装,所以速度极快】
HandBrake → 【File】→【Open File】→ 选择刚生成的temp.mkv → 选好预设(如“HQ 1080p60”)→ 【Start Encode】。
用命令行直接批量压制并隐式合并
如果你熟悉终端操作,且希望绕过GUI、全自动跑完,这条路径最干净。它本质是让HandBrakeCLI读取一个目录下所有视频,按字典序依次处理,再靠脚本控制输出命名逻辑,模拟“合并”效果。
第一步:准备环境
确保HandBrakeCLI.exe已在系统PATH中,或把它所在文件夹路径加入环境变量;同时确认当前目录下只有待处理的MP4/MKV文件,无其他干扰项。
第二步:Windows批处理脚本(新建merge.bat):
@echo off
setlocal enabledelayedexpansion
set count=0
for %%f in (*.mp4 *.mkv) do (
set /a count+=1
set name=clip_!count:~0,2!.mp4
HandBrakeCLI -i "%%f" -o "!name!" --preset="Fast 1080p30"
)
echo 所有文件压制完成
第三步:双击运行merge.bat,等待命令行窗口逐个输出“Encoding: task 1 of N”提示。
第四步:压制完成后,在同一目录下新建filelist.txt,按序填入clip_01.mp4、clip_02.mp4……然后执行和第一种方法最后一步完全相同的FFmpeg拼接命令。











