ffmpeg视频抽帧

视频文件是常见的一类数据,相关的任务包括视频物体检测、视频物体追踪、视频分类、视频检索和视频摘要抽取等。
视频数据与图像数据非常类似,都是由像素点组成的数据。在非音频部分可以视为多帧图像的拼接。
FFmpeg正是一套可以用来编码、解码、合成和转换音频和视频数据的开源软件,提供了非常全面的音视频处理功能。基本上所有的软件都会借助FFmpeg完成音视频的读取操作。
这篇博客主要介绍如何利用ffmpeg进行视频抽帧。

1.ffmpeg安装

ffmpeg官网中点击Download。我使用的是windows电脑,选择Windows EXE Files下的windows builds from gyan.dev

接着选择合适的版本和源进行下载即可。

下载完成后解压到合适的路径下,并添加到环境变量中。可以在cmd中输入ffmpeg进行验证。

2.ffmpeg视频抽帧

要用到ffmpeg的抽帧命令

ffmpeg -ss 00:00:00 -t 00:01:00 -i v_dir -r 3 -q:v 2 -f image2 png_dir/%d.png

参数含义:
-ss 00:00:00 -t 00:01:00 指定对前1分钟进行操作
-i 表示将视频转码,v_dir是要操作的视频对象的存放地址
-r 表示设置帧频,3代表每秒钟抽取3帧
-q:v 指定转码后的图像存储质量,2表示高质量
-f指定保存图片用的格式,image2是一种图像解析模式
png_dir为截取出的图片存放的地址。
%d.png是命名格式
其中,-r 帧频可以设置成分数比如1/20表示每20s抽取一帧。这种情况会默认加上首位两帧。而将-r 1/20替换为-vf fps=1/20则会从第20s开始。

3.加速

如果视频比较大,转码和抽帧的耗时比较久,可以在命令中加入

-threads 5

来加快速度。
其中,-threads 表示使用多个线程并行转码,5 代表线程数目

以上就是使用ffmpeg进行视频抽帧的基本操作啦!

补充:利用ffmpeg进行视频截取可以使用命令

ffmpeg -ss 0:30 -i input_dir -t 30 -c:v copy -c:a copy output_dir

-ss 0:30 指定从输入视频的30s开始截取,放在-i之前可以先跳转到30s再开始解码,
-t 30指明最多截取30s, -c:v和-c:a分别指定视频和音频的编码格式,copy表示编码格式不发生改变而是直接复制,可以提升速度。

posted @ 2023-01-22 13:00  openwindow_cc  阅读(3202)  评论(0)    收藏  举报