直接说一个后面才意识到的结论
问题:
ffmpeg为什么没有提供,提取指定数量关键帧的函数?
答:
视频编解码中的关键帧(IBP中的I)
! =
视频场景分类中的关键帧(帧间差分较大的帧)
三维重建需要不同角度的多张图片(至少三张)
当时需要提取指定数量关键帧,时间仓促,是通过等距抽样实现的。
下面稍微回忆一下。
之前拍摄视频后通过ffmpeg提取指定数量的图片,然后进行重建,速度相较于使用opencv提取图片有明显的提升。
但是这种方法并不能保证提取到的图片可以代表整段视频,当时了解到“关键帧”这个名词后,希望能从一段视频中提取出指定个数的关键帧。
当时受限于
1)ffmpeg没有直接提供相应的接口
2)没整明白ipb帧里面的i帧到底是不是未经压缩过的图片…
比较尴尬,最近在了解视频理解,看了看slowfast,顺手记录一下。
当时主要看见一堆这种I帧压缩的东西,现在才发现不对劲,这里的I帧压缩,指的是如果压缩视频的时候,而我现在是要做解码视频提取帧间差分比较大的关键帧,不是一个东西…
https://zhuanlan.zhihu.com/p/34162672
现在想想如果要在——一段视频中提取出指定个数的关键帧,可以先通过ffmpeg提取出所有关键帧I,随后使用类似帧间差分的方式进行第二次删选。
https://blog.csdn.net/u011583927/article/details/84842915