YOLO视觉检测应用标注篇(三)

视频帧提取

上一篇使用SAM2中介绍了对于视频进行识别,事实上需要先采样为图片。
因此这一篇介绍下视频帧的提取。

工具

我使用的是FFmpeg。
相信也有其他的工具,请网上搜索其他的教程。

下载

FFmpeg官网
官网提供Linux、Mac、Windows多种平台以及多种安装方式的文件下载。

手册

更加详细的内容,请参考:
官方手册

提取

基础帧提取

1
ffmpeg -i input.mp4 -vf "fps=30" frames/frame_%04d.png

参数说明:

  • -i input.mp4: 输入视频文件
  • -vf “fps=30”: 每秒提取30帧(可根据需求调整数值)
  • frames/frame_%04d.png: 输出路径及文件名格式(自动生成0001,0002…序列)

输出文件示例:

1
2
frames/frame_0001.png  
frames/frame_0002.png

按时间范围提取

即精确片段提取

1
ffmpeg -ss 00:01:30 -t 5 -i input.mp4 -vf "fps=30" 

参数说明:

  • -ss 00:01:30: 从1分30秒开始提取
  • -t 5: 提取持续5秒
  • 输出为JPG格式以节省存储空间(默认质量75,可通过-qscale:v调整)

关键帧提取

避免重复帧

1
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr keyframes_%04d.png

优势:

  • 仅提取I帧(关键帧),减少冗余图像
  • 适用于快速定位特征点

分辨率适配

兼容模型输入

1
ffmpeg -i input.mp4 -vf "scale=1024:-1,fps=15" scaled_%04d.png

功能:

  • 将宽度缩放到1024px,高度按比例自动调整
  • 降低抽帧率为15 FPS
    拓展 添加锐化滤镜提示清晰度:
    1
    -vf "scale=1024:-1,unsharp=3:3:1.0"

图像质量控制

优化文件体积

1
ffmpeg -i input.mp4 -qscale:v 2 -vf "fps=10" high_quality_%04d.jpg

参数说明:

  • -qscale:v 2: JPG质量等级(1-31,值越小质量越高)
    推荐:
  • 关键帧:使用PNG无损格式
  • 普通帧:JPG质量等级3-5

注意事项

  1. 注意目录管理:
    1
    mkdir frames  # 提前创建输出目录
  2. 文件命名
    使用%04d补零格式(如frame_0001.png)保证文件顺序正确
  3. 性能优化
    添加多线程加速参数:-threads 4

验证输出

  1. 检查首尾帧
    1
    ls frames/frame_0001.png frames/frame_$(ls frames | wc -l).png
  2. 统计总帧数
    1
    ls frames/*.png | wc -l

Remark

建议先用短视频测试参数效果,再处理完整视频


YOLO视觉检测应用标注篇(三)
http://kevin.zone.id/2025/04/19/ffmpeg/
作者
Kevin
发布于
2025年4月19日
许可协议