
图 1:0.5 秒级分镜大图汇总
真实案例记录:如何用 WorkBuddy 把一段 6 秒的电商带货视频,自动拆解成带时间戳的分镜脚本、0.5 秒级关键帧序列,以及一张可复制的分镜大图。
---
做短视频电商、品牌运营或内容二创的同学,经常遇到这类需求:
- 拿到一条爆款视频,想快速学习它的镜头节奏和视觉风格
- 需要给甲方输出规范的分镜脚本,但一帧一帧截图太费时
- 想把视频按固定时间间隔拆成关键帧,汇总成一张故事板
传统做法是:人工拖进度条、截图、命名、写文档,一条 6 秒的视频可能要折腾十几分钟。而用 WorkBuddy 的自动化能力,可以把整个流程压缩到几分钟,并且直接产出可复制的文字脚本、HTML 分镜板和 JPG 汇总大图。
下面以我最近处理的一段电商带货视频为例,完整记录整个流程。
---
原始素材:一段 6.3 秒、720×960 竖屏的服饰带货短视频。
期望输出:
1. 按 0.5 秒间隔提取的关键帧(共 13 张)
2. 包含时间戳、景别、运动、画面内容、台词的完整文字分镜脚本
3. 视觉风格总结(色调、光影、材质、AI 提示词反推)
4. 一张汇总所有分镜的大图
最终交付物清单:
8月1日视频分镜脚本.md # 文字版分镜与视觉风格总结 8月1日_05s分镜图/ # 13 张按时间命名的关键帧 8月1日_05s分镜图_分镜板.html # 可视化 HTML 分镜板 8月1日_分镜大图.jpg # 汇总为一张大图的完整故事板
---
直接把视频文件发送给 WorkBuddy,它会先判断格式、时长、分辨率、帧率等元信息。
视频信息:
项目 | 内容 |
|---|---|
文件大小 | 6.95 MB |
分辨率 | 720 × 960(竖屏 9:16) |
帧率 | 30 fps |
总帧数 | 189 帧 |
时长 | 6.3 秒 |
编码 | H.264 / AAC |
这一步其实踩了一个坑:WorkBuddy 默认没有安装 `ffmpeg`,直接读取二进制文件会失败。解决方案是让它在隔离 Python 环境中安装 `opencv-python-headless`,用 Python 读取视频帧。
通过 Python + OpenCV,按 0.5 秒间隔读取视频帧并保存为 JPG。
核心逻辑:
import cv2 import os video_path = "8月1日.mp4" output_dir = "/tmp/video_frames" os.makedirs(output_dir, exist_ok=True) cap = cv2.VideoCapture(video_path) fps = cap.get(cv2.CAP_PROP_FPS) total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) duration = total_frames / fps frame_interval = 0.5 t = 0.0 while t < duration: cap.set(cv2.CAP_PROP_POS_MSEC, t * 1000) ret, frame = cap.read() if ret: filename = os.path.join(output_dir, f"frame_{t:05.2f}s.jpg") cv2.imwrite(filename, frame) t += frame_interval cap.release()
这段代码的关键点是:
- 使用 `CAP_PROP_POS_MSEC` 按毫秒定位,避免逐帧读取浪费算力
- 输出文件名包含时间戳,方便后续按时间排序
- 0.5 秒间隔在「足够细」和「不会太多」之间取得平衡
提取结果:13 张关键帧,文件名从 `frame_00.00s.jpg` 到 `frame_06.00s.jpg`。
这一步需要 WorkBuddy 的多模态视觉能力。把提取出的每一帧交给它识别:
- 景别与角度(特写 / 中景 / 全景,平视 / 俯视)
- 镜头运动(手持晃动 / 平移 / 后拉)
- 画面主体与细节(产品、吊牌、背景、字幕)
- 口播台词
- 音频氛围
以实际分析为例,13 帧被归纳为 4 个镜头:
镜号 | 时间 | 景别 | 运动 | 主要内容 |
|---|---|---|---|---|
01 | 0:00–0:02 | 近景 / 平视 | 手持轻微晃动 | 一只手拎着米白色吊带背心,字幕"蕉树你是真的疯了" |
02 | 0:02–0:04.5 | 特写 / 俯视近景 | 吊牌推近 + 平放 | 展示蕉树品牌黄色吊牌,随后平铺在针织编织物上 |
03 | 0:04.5–0:05.5 | 中景 / 俯视 | 后拉 / 上摇 | 米白 + 浅卡其两件吊带背心并排展示 |
04 | 0:05.5–0:06.3 | 近景 / 平视 | 重新拎起展示 | 回到米白色单件正面,字幕"真的太炸裂了" |
WorkBuddy 会生成一份 Markdown 文档,包含:
- 基础信息
- 按时间顺序的分镜脚本
- 视觉风格总结:画面风格、色调、光影、材质
- Seedance 提示词反推(用于 AI 视频生成)
色调总结示例:
画面以暖白色、米色系为主导,配合棕黄色粗针织背景与黑色沙发的深色块,形成柔和、温馨且略带高级感的居家氛围。
材质识别示例:
产品面料为无痕冰丝 / 凉感锦纶混纺,表面呈现细腻哑光质感,带有轻微光泽,垂坠感好。
为了让非技术人员也能直观查看,再生成一个 HTML 分镜板:
- 网格布局展示 13 张关键帧
- 每张图下方标注时间戳、镜号、口播字幕
- 响应式设计,浏览器直接打开即可查看
HTML 分镜板的优势是:
- 比 Word 更直观
- 比单独发 13 张图更系统
- 可以直接发给团队或甲方
最后一步是用 Pillow 把所有关键帧拼接成一张大图,方便:
- 插入 PPT 汇报
- 在微信/飞书里一次性发送
- 作为项目归档封面
拼接代码示例:
from PIL import Image, ImageDraw, ImageFont import glob files = sorted(glob.glob("frame_*.jpg")) img_w, img_h = 720, 960 info_h = 70 margin = 12 cell_w = img_w + margin * 2 cell_h = img_h + info_h + margin * 2 cols, rows = 3, 5 header_h = 90 board = Image.new("RGB", (cell_w * cols, header_h + cell_h * rows), "#f5f5f7") # 按行列贴图并绘制时间戳、镜号、字幕
最终产出为 2232 × 5360 像素的高清大图。
---
现象:直接读取视频文件时提示无法解码。
解决:使用 Python `opencv-python-headless` 在隔离 venv 中读取帧,不依赖系统 ffmpeg。
现象:如果直接用原始 720×960 分辨率拼成多列,图片会非常高。
解决:采用 3 列 × 5 行布局,每张图上方加信息条,既保留清晰度,又不至于比例失衡。
现象:13 张图如果靠人工标注,很容易把字幕和镜号对不上。
解决:在 Python 脚本里用字典把每个时间戳对应的镜号和字幕写死,避免手动标注出错。
shot_info = { "00.00": ("镜号 01", "蕉树你是真的疯了"), "00.50": ("镜号 01", "蕉树你是真的疯了"), # ... }
---
这个流程不只是电商视频可以用,还可以迁移到:
- 广告片拆解:学习 TVC 的镜头语言和节奏
- 课程/培训视频:自动生成课件配图
- 短视频二创:快速提取爆款视频结构
- AI 视频训练:为 Seedance / 可灵等工具准备参考帧和提示词
---
用 WorkBuddy 做视频解析的核心价值是:
1. 全流程自动化:从视频读取 → 抽帧 → 视觉分析 → 输出脚本 → 汇总大图,不需要人工逐帧操作
2. 多模态分析:AI 能同时识别画面内容、字幕、材质、光影等专业维度
3. 直接交付可用结果:文字脚本、HTML 分镜板、JPG 大图一次性产出
如果你也经常处理短视频素材,建议直接把这个流程保存为 WorkBuddy 的自动化技能(Skill),以后只要丢一个视频进去,就能自动拿到同样的交付物。
---
作者实践:本文案例完全基于真实任务,6.3 秒视频从上传到大图交付约 5 分钟完成。
本文首发于腾讯云开发者社区 · 由 WorkBuddy 辅助创作
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。