视频合并拼接
它解决什么问题
手机上拍的视频经常是一段一段的:从相册里挑三个 MP4 片段按顺序拼成一个完整视频,这是一个高频需求。但手机上的片段经常有这些情况:
- 每个片段分辨率不一样(有的 1080p、有的 720p、有的横屏有的竖屏);
- 有的片段带音轨,有的没带;
- 编解码器可能不同(有的 H.264 + AAC,有的 H.265 + Opus)。
直接用 FFmpeg 原始的 concat demuxer 只适合同分辨率同编码器的片段。ZenConverter 的合并路线走 filter_complex concat,把所有片段统一到一个画布尺寸和一个音频规格之后再拼,这就是它能处理异构片段的原因。
合并管线
片段 A → 解码 → scale+pad 归一化分辨率 → 静音轨补充 → concat
片段 B → 解码 → scale+pad 归一化分辨率 → 静音轨补充 → concat 目标
片段 C → 解码 → scale+pad 归一化分辨率 → 静音轨补充 → concat
具体做法:
视频归一化:所有片段先解码,然后 scale 到一个统一分辨率(默认以第一个片段的尺寸为参考,或用你在压缩预设里设的短边上限),再用 pad 滤镜补黑边(letterboxing / pillarboxing)把宽高比不同的片段填到同一个画布尺寸。
音频归一化:所有片段的音频统一到 48kHz 立体声(WEBM 输出)或 44.1kHz 立体声 AAC(MP4/MKV/MOV 输出)。没有音轨的片段用静音轨补充,保证 concat 的音频轨道数一致。
压缩预设仍然生效。合并完的总视频会按压缩预设或手动参数编码成最终输出。
输出格式
合并后的输出格式支持四种:MP4、MKV、MOV、WEBM。选择输出格式后,压缩预设和手动参数(编码、CRF、preset、分辨率、帧率)会对合并后的总视频生效。
使用场景
场景一:旅行 VLOG 多个片段拼起来
手机拍的视频经常是横屏竖屏混着(路上横屏、人像竖屏)。选"视频合并",按顺序加三个片段,选均衡压缩预设,合并后得到一个 720p 的完整视频,竖屏片段自动补黑边。
场景二:无声视频片段
某个片段是你录的游戏画面,没开录音。合并时系统自动补静音轨,保证输出视频有连续的音轨(可以后来叠加背景音乐)。
场景三:片段间编码不一致
一个片段是 H.264 1080p AAC,另一个是 H.265 720p Opus。合并管线先解码再统一编码,绕过了 codec mismatch 问题。
已知边界
- 合并顺序 = 选择顺序:你在应用里选了片段 A → B → C,输出里的顺序就是 A → B → C。没有拖拽重排功能;
- 黑边是有意的:宽高比不匹配时加黑边是为了不裁剪画面。如果你不想要黑边,可以在手动模式下用 crop 滤镜先裁剪每个片段;
- 不保留额外轨:字幕轨、数据轨、多音轨在合并过程中会被丢弃。输出只有一个视频轨 + 一个音频轨;
- 时间戳被清理:源片段的原始时间戳(比如拍摄时间)会在重新编码后丢失。
和其他合并方案对比
| 方案 | 异构片段处理 | 额外依赖 | 本地处理 |
|---|---|---|---|
| ZenConverter 合并 | scale+pad 归一化,自动补静音 | 无 | ✅ |
| FFmpeg 原始 concat demuxer | 只适合同规格片段 | 命令行 | ✅ |
| 桌面端剪映 / 必剪 | 完整剪辑时间线 | 桌面应用 | ✅ |
| 在线合并工具 | 上传到云端 | 浏览器 | ❌ |
ZenConverter 合并的定位是够用的拼接,不是完整剪辑器。如果你想要精确时间线、转场、字幕叠加,用桌面端剪辑工具更合适。但如果你的需求就是"把几段视频按顺序拼在一起、自动调尺寸和音轨",ZenConverter 合并够用了。
