使用 ffmpeg 将 GIF 与视频合并为竖向或网格布局的组合教程
夜市技能——从claude-night-market/scry移植. 对于代理、钩子和命令的全部体验,请安装 Claude 代码插件.
功能概述
夜市技能——从claude-night-market/scry移植. 对于代理、钩子和命令的全部体验,请安装 Claude 代码插件.是一项面向实际任务的技能,主要用于Colution.;Table of Control.;
核心要点
- Overview.;
- Required TodoWrite。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
使用与执行
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Night Market Skill — 由 claude-night-market/scry 移植而来。如需完整体验(含智能体、钩子与命令支持),请安装 Claude Code 插件。
目录
- 概述
- 必需的 TodoWrite 任务项
- 清单文件格式
- 清单文件 Schema
- 分步执行流程
- 1. 解析清单文件
- 2. 验证组件输出文件存在性
- 3. 执行 FFmpeg 合成操作
- 4. 验证合成输出结果
- FFmpeg 合成命令
- 垂直堆叠
- 水平堆叠
- 顺序拼接
- 网格布局(2×2)
- 带背景色的合成
- 布局选项
- 布局选项详情
- 合成示例
- 终端 + 浏览器教程
- 并排对比
- 画中画(PiP)
- 退出条件
媒体合成技能
将多个媒体资源(GIF、视频、图片)组合为复合输出,适用于详尽的教程与文档制作。
适用场景
- 将多个独立生成的媒体输出整合为复合内容
- 基于终端与浏览器录制素材创建复合演示
不适用场景
- 单一格式输出且无需合成
- 简单的终端录制 —— 请直接使用 scry:vhs-recording
概述
本技能协调多个独立生成的媒体资产,将其合成为统一输出。它读取定义了组件及其合成规则的清单文件,验证所有输入文件是否存在,并执行 FFmpeg 命令生成最终的复合媒体文件。
必需的 TodoWrite 任务项
- 解析合成清单文件 - 验证所有组件输出文件均存在 - 确定合成布局及参数 - 执行 FFmpeg 合成命令 - 验证合成输出文件已成功创建 - 上报合成指标(文件大小、分辨率等)
验证方式:运行命令时添加 --help 参数,确认其可用性。
清单文件格式
清单文件定义需合成的组件及其排列方式:
# 示例清单:tutorials/mcp.manifest.yaml
name: mcp
title: "MCP Server Integration"
components:
- type: tape
source: mcp.tape
output: assets/gifs/mcp-terminal.gif
- type: playwright
source: browser/mcp-browser.spec.ts
output: assets/gifs/mcp-browser.gif
requires:
- "skrills serve"
combine:
output: assets/gifs/mcp-combined.gif
layout: vertical
options:
padding: 10
background: "#1a1a2e"
验证方式:运行命令时添加 --help 参数,确认其可用性。
清单文件 Schema
| 字段 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
name |
string | 是 | 合成任务的唯一标识符 |
title |
string | 否 | 面向用户的可读标题 |
components |
array | 是 | 待合成的媒体组件列表 |
components[].type |
string | 是 | 数据源类型:tape、playwright、static |
components[].source |
string | 是 | 源文件路径 |
components[].output |
string | 是 | 生成的目标输出路径 |
components[].requires |
array | 否 | 生成前需执行的命令列表 |
combine.output |
string | 是 | 合成后输出文件路径 |
combine.layout |
string | 是 | 布局模式(见下表) |
combine.options |
object | 否 | 布局相关配置项 |
分步执行流程
1. 解析清单文件
# 读取并校验清单结构 yq eval '.' manifest.yaml # 提取各组件的 output 字段值 yq eval '.components[].output' manifest.yaml
验证方式:运行命令时添加 --help 参数,确认其可用性。
2. 验证组件输出文件存在性
# 检查所有要求的输出文件是否存在
for output in $(yq eval '.components[].output' manifest.yaml); do
if [[ ! -f "$output" ]]; then
echo "ERROR: Missing component: $output"
exit 1
fi
done
验证方式:运行命令时添加 --help 参数,确认其可用性。
3. 执行 FFmpeg 合成操作
根据清单文件中指定的 layout,执行对应的 FFmpeg 命令。
4. 验证合成输出结果
# 验证输出文件存在且非空 if [[ -f "$output" && -s "$output" ]]; then echo "Composition successful: $output" ls -lh "$output" else echo "ERROR: Composition failed" exit 1 fi
验证方式:运行命令时添加 --help 参数,确认其可用性。
FFmpeg 合成命令
垂直堆叠
将 GIF/视频自上而下堆叠:
ffmpeg -i top.gif -i bottom.gif -filter_complex "[0:v][1:v]vstack=inputs=2" -y output.gif
验证方式:运行命令时添加 --help 参数,确认其可用性。
带组件间间距(padding):
ffmpeg -i top.gif -i bottom.gif -filter_complex "[0:v]pad=iw:ih+10:0:0:color=black[top];[top][1:v]vstack=inputs=2" -y output.gif
验证方式:运行命令时添加 --help 参数,确认其可用性。
水平堆叠
将 GIF/视频并排堆叠:
ffmpeg -i left.gif -i right.gif -filter_complex "[0:v][1:v]hstack=inputs=2" -y output.gif
验证方式:运行命令时添加 --help 参数,确认其可用性。
顺序拼接
按顺序播放 GIF/视频:
# 创建 concat 列表文件 cat > concat_list.txt << EOF file 'first.gif' file 'second.gif' file 'third.gif' EOF # 执行拼接 ffmpeg -f concat -safe 0 -i concat_list.txt -y output.gif
验证方式:运行命令时添加 --help 参数,确认其可用性。
网格布局(2×2)
ffmpeg -i tl.gif -i tr.gif -i bl.gif -i br.gif -filter_complex "[0:v][1:v]hstack=inputs=2[top];[2:v][3:v]hstack=inputs=2[bottom];[top][bottom]vstack=inputs=2" -y output.gif
验证方式:运行命令时添加 --help 参数,确认其可用性。
带背景色的合成
ffmpeg -i top.gif -i bottom.gif -filter_complex "color=c=#1a1a2e:s=800x600[bg];[bg][0:v]overlay=0:0[tmp];[tmp][1:v]overlay=0:300" -y output.gif
验证方式:运行命令时添加 --help 参数,确认其可用性。
布局选项
| 布局 | 说明 | 支持的配置项 |
|---|---|---|
vertical |
自上而下堆叠 | padding、background、align |
horizontal |
从左至右堆叠 | padding、background、align |
sequential |
按顺序播放 | transition、duration |
grid |
N × M 网格布局 | rows、cols、padding |
overlay |
图层叠加(上层覆盖下层) | position、opacity |
pip |
画中画(Picture-in-Picture) | corner、scale、margin |
布局选项详情
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
padding |
int | 0 | 组件之间的像素间距 |
background |
string | "black" | 背景色(支持十六进制或颜色名称) |
align |
string | "center" | 对齐方式:left / center / right |
transition |
string | "none" | 转场类型:fade / wipe / none |
scale |
float | 0.25 | PiP 缩放比例 |
corner |
string | "br" | PiP 所在角落:tl(左上)、tr(右上)、bl(左下)、br(右下) |
合成示例
终端 + 浏览器教程
name: plugin-demo
components:
- type: tape
source: demo.tape
output: terminal.gif
- type: playwright
source: browser.spec.ts
output: browser.gif
combine:
output: demo-combined.gif
layout: vertical
options:
padding: 5
background: "#0d1117"
验证方式:运行命令时添加 --help 参数,确认其可用性。
并排对比
name: before-after
components:
- type: static
source: before.gif
output: before.gif
- type: static
source: after.gif
output: after.gif
combine:
output: comparison.gif
layout: horizontal
options:
padding: 10
验证方式:运行命令时添加 --help 参数,确认其可用性。
画中画(PiP)
name: pip-demo
components:
- type: tape
source: main.tape
output: main.gif
- type: playwright
source: overlay.spec.ts
output: overlay.gif
combine:
output: pip-demo.gif
layout: pip
options:
corner: br
scale: 0.3
margin: 20
验证方式:运行命令时添加 --help 参数,确认其可用性。
退出条件
- 清单文件成功解析
- 所有组件输出文件均已验证存在
- FFmpeg 合成命令执行无错误
- 合成输出文件存在且大小非零
- 输出分辨率与持续时间已记录
- 临时文件已清理
热门AI工具
相关专题
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。
0
2026.11.04
本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。
0
2026.11.03
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.7万人学习
共6课时 | 54.7万人学习
最新文章