ffmpeg 提取关键帧

参考key-frame
关键帧,是指动画中一个绘图,定义任何的起点和终点平滑过渡,一系列关键帧定义了观看者将看到的运动,而关键帧在电影,视频或动画上的位置定义了运动的时间。

获取方法,参考视频关键帧提取

ffmpeg -i video_name.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 1920*1080 -f image2 core-%02d.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,

ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv bbb480.avi | 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)

  • 11
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值