FFmpeg 简介
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。
FFmpeg是在 Linux 下开发出来的,但它可以在包括 Windows 在内的大多数操作系统中编译。
这个项目是由 Fabrice Bellard 发起的,现在由 Michael Niedermayer 主持。
可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi等转成现在视频网站所采用的flv格式。
Window上FFmpeg的安装
FFmpeg下载Window版链接 : https://ffmpeg.zeranoe.com/builds/
- 下载Windows版本的FFmpeg,并解压到需要安装的目录
- 在[此电脑或者计算机]上[右键]——[属性]——[高级系统设置],在高级选项卡点击[环境变量]
- 在[系统变量]下找到[path],然后添加 D:\Install soft\ffmpeg20200812\bin (这是解压后我电脑上的目录)
- windowr+R键,运行cmd,输入ffmpeg -version
ffmpeg抽取视频的关键帧
ffmpeg -i aaa.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 540*960 -f image2 core-%04d.jpeg
各个参数解释:
-i :输入文件,这里的话其实就是视频,
-vf:是一个命令行,表示过滤图形的描述, 选择过滤器select会选择帧进行输出:包括过滤器常量
pict_type和对应的类型:PICT_TYPE_I 表示是I帧,即关键帧。
-vsync 2:阻止每个关键帧产生多余的拷贝
-f image2 name_%02d.jpeg:将视频帧写入到图片中,样式的格式一般是: “%d” 或者 “%0Nd”
-s:分辨率,1920*1080
这样保存下来的关键帧的命名顺序是从1开始的,数字表示第几个关键帧。需要保存关键帧在原始视频中的帧的位置,参考Extracting the index of key frames from a video using ffmpeg。
PS:aaa.mp4 是视频文件
ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv aaa.mp4 | grep -n I | cut -d ':' -f 1 > frame_indices.txt
会生成一个 frame_indices.txt 的文件,其中保存的即为关键帧在视频中的帧的索引位置。 再将生成的关键帧与索引对应起来:
ls -1 core*.jpeg > core.txt paste core.txt frame_indices.txt > combine.txt
生成的 combine.txt中每一行即为{}\t{}.format(core1, frame1)。
参考文章
© 版权声明