| name | video-frames |
| description | Extract frames or short clips from videos using ffmpeg. Supports extracting single frames, generating thumbnails, creating previews, and extracting clips from videos in various formats (MP4, AVI, MKV, MOV, etc.). |
| triggers | ["video","视频","frame","帧","extract frame","提取视频帧","thumbnail","缩略图","ffmpeg","视频处理","clip","片段","screenshot","截图","preview","预览"] |
| homepage | https://ffmpeg.org |
| metadata | {"clawdbot":{"emoji":"🎞️","requires":{"bins":["ffmpeg"]},"install":[{"id":"brew","kind":"brew","formula":"ffmpeg","bins":["ffmpeg"],"label":"Install ffmpeg (brew)"}]}} |
Video Frames - 视频帧提取技能
使用 ffmpeg 从视频中提取帧、生成缩略图或创建短视频片段。
🎯 核心功能
帧提取
- 单帧提取 - 从指定时间点提取单张图片
- 缩略图生成 - 自动生成视频缩略图
- 预览帧 - 创建视频预览图片序列
- 关键帧提取 - 提取视频关键帧
视频处理
- 片段提取 - 提取视频特定时间段的片段
- 格式转换 - 视频格式转换和压缩
- 分辨率调整 - 调整视频分辨率和质量
- 元数据提取 - 提取视频信息和元数据
🚀 快速开始
安装依赖
sudo apt-get update && sudo apt-get install -y ffmpeg
sudo yum install -y ffmpeg
brew install ffmpeg
ffmpeg -version
基础使用
{baseDir}/scripts/frame.sh /path/to/video.mp4 --out /tmp/frame.jpg
{baseDir}/scripts/frame.sh /path/to/video.mp4 --time 00:00:10 --out /tmp/frame-10s.jpg
{baseDir}/scripts/clip.sh /path/to/video.mp4 --start 00:00:05 --duration 10 --out /tmp/clip.mp4
📖 使用示例
中文示例
{baseDir}/scripts/frame.sh /path/to/教学视频.mp4 --out 封面.jpg
{baseDir}/scripts/frame.sh /path/to/演示视频.mp4 --time 00:01:30 --out 预览.jpg
{baseDir}/scripts/thumbnails.sh /path/to/完整视频.mp4 --grid 3x3 --out 缩略图网格.jpg
{baseDir}/scripts/clip.sh /path/to/会议录像.mp4 --start 00:10:00 --duration 300 --out 会议精华.mp4
for video in *.mp4; do
{baseDir}/scripts/frame.sh "$video" --time 00:00:05 --out "${video%.mp4}-preview.jpg"
done
英文示例
{baseDir}/scripts/frame.sh /path/to/tutorial.mp4 --out cover.jpg
{baseDir}/scripts/frame.sh /path/to/demo.mp4 --time 00:01:30 --out preview.jpg
{baseDir}/scripts/thumbnails.sh /path/to/full-video.mp4 --grid 3x3 --out thumbnail-grid.jpg
{baseDir}/scripts/clip.sh /path/to/meeting-recording.mp4 --start 00:10:00 --duration 300 --out highlights.mp4
for video in *.mp4; do
{baseDir}/scripts/frame.sh "$video" --time 00:00:05 --out "${video%.mp4}-preview.jpg"
done
🔧 核心脚本
frame.sh - 帧提取脚本
#!/bin/bash
VIDEO="$1"
OUTPUT="$2"
TIME="${3:-00:00:00}"
ffmpeg -i "$VIDEO" -ss "$TIME" -vframes 1 -q:v 2 "$OUTPUT" 2>/dev/null
clip.sh - 片段提取脚本
#!/bin/bash
VIDEO="$1"
START="$2"
DURATION="$3"
OUTPUT="$4"
ffmpeg -i "$VIDEO" -ss "$START" -t "$DURATION" -c copy "$OUTPUT" 2>/dev/null
thumbnails.sh - 缩略图生成脚本
#!/bin/bash
VIDEO="$1"
GRID="$2"
OUTPUT="$3"
TOTAL_FRAMES=9
VIDEO_DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$VIDEO")
INTERVAL=$(echo "$VIDEO_DURATION / ($TOTAL_FRAMES + 1)" | bc)
for i in $(seq 1 $TOTAL_FRAMES); do
TIME=$(echo "$INTERVAL * $i" | bc)
ffmpeg -i "$VIDEO" -ss "$TIME" -vframes 1 -q:v 2 "temp_$i.jpg" 2>/dev/null
done
montage temp_*.jpg -tile "$GRID" -geometry +0+0 "$OUTPUT"
rm temp_*.jpg
🛠️ 高级功能
关键帧提取
{baseDir}/scripts/keyframes.sh /path/to/video.mp4 --out keyframes/
{baseDir}/scripts/keyframes.sh /path/to/video.mp4 --summary --out video-summary/
视频分析
{baseDir}/scripts/info.sh /path/to/video.mp4
{baseDir}/scripts/scene-detect.sh /path/to/video.mp4 --out scenes.json
{baseDir}/scripts/subtitle-detect.sh /path/to/video.mp4 --out subtitles.txt
批量处理
{baseDir}/scripts/batch-process.sh /path/to/videos/ --action frame --time 00:00:05
{baseDir}/scripts/batch-process.sh /path/to/videos/ --action thumbnail --grid 2x2
{baseDir}/scripts/batch-process.sh /path/to/videos/ --action clip --start 00:00:00 --duration 10
📁 文件结构
video-frames/
├── SKILL.md # 技能说明文档
├── _meta.json # 元数据
├── scripts/
│ ├── frame.sh # 帧提取脚本
│ ├── clip.sh # 片段提取脚本
│ ├── thumbnails.sh # 缩略图脚本
│ ├── keyframes.sh # 关键帧提取
│ ├── info.sh # 视频信息提取
│ ├── scene-detect.sh # 场景检测
│ ├── subtitle-detect.sh # 字幕检测
│ ├── batch-process.sh # 批量处理
│ └── utils.sh # 工具函数
├── examples/
│ ├── basic-examples/ # 基础示例
│ ├── advanced-examples/ # 高级示例
│ └── batch-examples/ # 批量处理示例
└── references/
├── ffmpeg-guide.md # ffmpeg使用指南
├── video-formats.md # 视频格式参考
└── optimization-tips.md # 优化技巧
⚠️ 故障排除
常见问题
-
ffmpeg未安装
which ffmpeg
sudo apt-get update && sudo apt-get install -y ffmpeg
sudo yum install -y ffmpeg
brew install ffmpeg
-
视频格式不支持
ffprobe /path/to/video.mp4
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
-
帧提取质量差
ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 -q:v 1 high-quality.jpg
ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 -accurate_seek -q:v 2 accurate.jpg
调试模式
export FFMPEG_VERBOSE=1
./scripts/frame.sh video.mp4 --out test.jpg --debug
tail -f ffmpeg.log
🔄 与其他技能集成
与image-recognition技能集成
{baseDir}/scripts/frame.sh video.mp4 --time 00:00:10 --out frame.jpg
python3 -m image_recognition recognize frame.jpg --output analysis.json
{baseDir}/scripts/batch-process.sh videos/ --action frame --interval 30 | \
xargs -I {} python3 -m image_recognition recognize {} --output {}.json
与飞书技能集成
{baseDir}/scripts/frame.sh presentation.mp4 --time 00:02:00 --out preview.jpg
python3 -c "
import requests
# 发送图片到飞书
print('发送视频预览到飞书')
"
{baseDir}/scripts/thumbnails.sh tutorial.mp4 --grid 2x2 --out summary.jpg
与self-improving-agent集成
cat >> .learnings/LEARNINGS.md << 'EOF'
**记录时间**: 2026-03-12T16:30:00Z
**优先级**: 中
**状态**: 已验证
**领域**: 多媒体
使用ffmpeg提取视频帧的最佳实践
1. 使用-ss参数进行精确时间定位
2. 使用-q:v 2平衡质量和文件大小
3. 批量处理时使用并行处理提高效率
4. 关键帧提取使用-seek精确模式
EOF
📊 性能优化
提取优化
ffmpeg -hwaccel cuda -i video.mp4 -ss 00:00:10 -vframes 1 frame.jpg
ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 -threads 2 frame.jpg
parallel -j 4 ffmpeg -i {} -ss 00:00:05 -vframes 1 {.}.jpg ::: *.mp4
质量设置
ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 -q:v 1 high-quality.jpg
ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 -q:v 2 medium-quality.jpg
ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 -q:v 5 low-quality.jpg
🎯 最佳实践
帧提取
- 精确时间 - 使用-ss参数进行精确时间定位
- 质量平衡 - 根据用途选择适当的质量级别
- 格式选择 - JPEG用于预览,PNG用于精确分析
- 错误处理 - 检查视频是否存在,格式是否支持
批量处理
- 并行处理 - 使用GNU parallel提高处理速度
- 内存管理 - 控制同时处理的视频数量
- 进度跟踪 - 显示处理进度和预估时间
- 结果验证 - 验证提取的帧是否正确
🔮 未来计划
v2.0.0 计划功能
- AI驱动的智能帧选择
- 视频内容分析摘要
- 自动字幕生成
- 人脸和物体检测
- 视频风格转换
短期改进
- 更多视频格式支持
- 更好的错误处理和恢复
- GPU加速处理
- 云存储集成
- 移动设备优化
✨ 从视频中提取精彩瞬间,让内容创作更简单!