视频拼接
功能
- 1. 拼接:多个视频片段 → 完整视频
- 转场:添加片段间过渡效果
- 音频:背景音乐、音量调整
- 字幕:叠加字幕/文字
- 导出:多种格式和分辨率
工具选择
| 工具 | 适用场景 |
|---|
| FFmpeg | 简单拼接、快速处理、命令行 |
| Remotion |
复杂动效、React 组件、品牌化 |
默认使用 FFmpeg。复杂需求用 Remotion。
输入参数
| 参数 | 必填 | 说明 |
|---|
| clips | ✓ | 视频片段列表(路径或URL) |
| output |
✓ | 输出路径 |
| transition | - | 转场类型 |
| transition_duration | - | 转场时长(默认0.5s)|
| bgm | - | 背景音乐路径 |
| bgm_volume | - | BGM音量(0-1,默认0.3)|
| subtitles | - | 字幕文件(SRT/ASS)|
| resolution | - | 输出分辨率 |
| fps | - | 帧率(默认30)|
| format | - | 输出格式(mp4/mov/webm)|
输入格式
CODEBLOCK0
转场类型
FFmpeg 支持
| 转场 | 效果 | 命令 |
|---|
| fade | 淡入淡出 | INLINECODE0 |
| dissolve |
溶解 |
xfade=dissolve |
| wipeleft | 左擦除 |
xfade=wipeleft |
| wiperight | 右擦除 |
xfade=wiperight |
| slideup | 上滑 |
xfade=slideup |
| slidedown | 下滑 |
xfade=slidedown |
| none | 无转场 | 硬切 |
Remotion 额外支持
- - 自定义 React 动画
- 品牌化转场
- 复杂遮罩效果
FFmpeg 命令示例
简单拼接(无转场)
CODEBLOCK1
带转场拼接
CODEBLOCK2
添加背景音乐
CODEBLOCK3
添加字幕
CODEBLOCK4
详见已有的 ffmpeg-video-editor skill。
工作流程
CODEBLOCK5
与上下游对接
上游输入:
- -
scene-video-generator 的视频片段 - INLINECODE8 的口播视频
- Demo 视频片段
Pipeline 集成示例:
CODEBLOCK6
输出格式建议
| 平台 | 分辨率 | 比例 | 格式 |
|---|
| 抖音/快手 | 1080x1920 | 9:16 | mp4 |
| 小红书 |
1080x1440 | 3:4 | mp4 |
| YouTube Shorts | 1080x1920 | 9:16 | mp4 |
| B站/YouTube | 1920x1080 | 16:9 | mp4 |
| 微信视频号 | 1080x1920 | 9:16 | mp4 |
注意事项
- 1. 输入片段分辨率不一致时,会自动缩放(可能影响质量)
- 转场会减少总时长(每个转场减少 transition_duration)
- BGM 时长不够会循环,太长会裁剪
- 大量片段时建议分批处理
- 4K 视频渲染较慢,考虑先用 1080p 预览
视频拼接
功能
- 1. 拼接:多个视频片段 → 完整视频
- 转场:添加片段间过渡效果
- 音频:背景音乐、音量调整
- 字幕:叠加字幕/文字
- 导出:多种格式和分辨率
工具选择
| 工具 | 适用场景 |
|---|
| FFmpeg | 简单拼接、快速处理、命令行 |
| Remotion |
复杂动效、React 组件、品牌化 |
默认使用 FFmpeg。复杂需求用 Remotion。
输入参数
| 参数 | 必填 | 说明 |
|---|
| clips | ✓ | 视频片段列表(路径或URL) |
| output |
✓ | 输出路径 |
| transition | - | 转场类型 |
| transition_duration | - | 转场时长(默认0.5s)|
| bgm | - | 背景音乐路径 |
| bgm_volume | - | BGM音量(0-1,默认0.3)|
| subtitles | - | 字幕文件(SRT/ASS)|
| resolution | - | 输出分辨率 |
| fps | - | 帧率(默认30)|
| format | - | 输出格式(mp4/mov/webm)|
输入格式
yaml
clips:
- path: scene_01.mp4
trim_start: 0 # 可选:裁剪起点
trim_end: 5 # 可选:裁剪终点
- path: scene_02.mp4
transition: fade # 到下一个片段的转场
- path: scene_03.mp4
output: final_video.mp4
transition: fade # 全局默认转场
transition_duration: 0.5
bgm: background_music.mp3
bgm_volume: 0.2
fade_bgm: true # BGM 渐入渐出
subtitles: captions.srt
resolution: 1080x1920 # 竖屏
fps: 30
format: mp4
转场类型
FFmpeg 支持
| 转场 | 效果 | 命令 |
|---|
| fade | 淡入淡出 | xfade=fade |
| dissolve |
溶解 | xfade=dissolve |
| wipeleft | 左擦除 | xfade=wipeleft |
| wiperight | 右擦除 | xfade=wiperight |
| slideup | 上滑 | xfade=slideup |
| slidedown | 下滑 | xfade=slidedown |
| none | 无转场 | 硬切 |
Remotion 额外支持
- - 自定义 React 动画
- 品牌化转场
- 复杂遮罩效果
FFmpeg 命令示例
简单拼接(无转场)
bash
创建文件列表
cat > list.txt << EOF
file scene_01.mp4
file scene_02.mp4
file scene_03.mp4
EOF
拼接
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
带转场拼接
bash
ffmpeg -i scene01.mp4 -i scene02.mp4 \
-filter_complex [0:v][1:v]xfade=transition=fade:duration=0.5:offset=4.5[v] \
-map [v] output.mp4
添加背景音乐
bash
ffmpeg -i video.mp4 -i bgm.mp3 \
-filter_complex [1:a]volume=0.3[bgm];[0:a][bgm]amix=inputs=2:duration=first[a] \
-map 0:v -map [a] output.mp4
添加字幕
bash
ffmpeg -i video.mp4 -vf subtitles=captions.srt output.mp4
详见已有的 ffmpeg-video-editor skill。
工作流程
输入: clips[] + 配置
↓
验证所有片段可访问
↓
统一格式/分辨率(如需要)
↓
计算转场 offset
↓
生成 FFmpeg 命令 / Remotion 项目
↓
执行渲染
↓
输出: 完整视频
与上下游对接
上游输入:
- - scene-video-generator 的视频片段
- digital-avatar 的口播视频
- Demo 视频片段
Pipeline 集成示例:
yaml
从 video-script-generator 输出
scenes:
- id: 1
video: hook.mp4 # scene-video-generator 输出
duration: 3s
- id: 2
video: talking.mp4 # digital-avatar 输出
duration: 5s
- id: 3
video: demo.mp4 # demo skill 输出
duration: 10s
- id: 4
video: cta.mp4 # scene-video-generator 输出
duration: 3s
自动拼接
output: final_promo.mp4
transition: fade
bgm: upbeat_music.mp3
输出格式建议
| 平台 | 分辨率 | 比例 | 格式 |
|---|
| 抖音/快手 | 1080x1920 | 9:16 | mp4 |
| 小红书 |
1080x1440 | 3:4 | mp4 |
| YouTube Shorts | 1080x1920 | 9:16 | mp4 |
| B站/YouTube | 1920x1080 | 16:9 | mp4 |
| 微信视频号 | 1080x1920 | 9:16 | mp4 |
注意事项
- 1. 输入片段分辨率不一致时,会自动缩放(可能影响质量)
- 转场会减少总时长(每个转场减少 transition_duration)
- BGM 时长不够会循环,太长会裁剪
- 大量片段时建议分批处理
- 4K 视频渲染较慢,考虑先用 1080p 预览