×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

FFMpeg-MLU命令行进行抽帧方法总结 博博2023-08-04 10:28:06 回复 2 查看 技术答疑 经验交流 社区交流
FFMpeg-MLU命令行进行抽帧方法总结
分享到:

基于ffmeg进行抽帧共有四种方式:

  • 抽取视频关键帧(I/P/B)

  • 抽取视频场景转换帧

  • 根据时间进行均匀抽帧

  • 抽取指定时间的视频帧

1.抽取视频关键帧(IPB):

视频关键帧(Video Key s)是用于视频压缩和视频编解码的帧,视频关键帧是包含了完整信息的帧,其他的非关键帧将会使用与关键帧的差值进行压缩。视频帧具体可以分为IPB帧三种:

  • I帧表示关键帧,是最完整的帧画面,一般视频封面都选择I帧;

  • P帧单预测帧,利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码;

  • B帧双向预测帧,利用双向帧进行预测编码;

一般情况下关键帧`I帧`是信息最多的帧,也是用途最多的帧。在视频检索和视频分类任务中一般都借助`I帧`来完成,在一个时长60s的视频中,可以抽取得到16个I帧、84个P帧和184个B,I帧数量少包含的信息却是最多的。

  • 使用ffprobe提取出IPB帧的时间:

ffprobe -i 666051400.mp4 -v quiet -select_streams v -show_entries  =pkt_pts_time,pict_typ
  • 使用ffmpeg抽取IPB帧到jpg图片:

# 抽取I帧
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,I)"  -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
 
# 抽取P帧
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,P)"  -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
 
# 抽取B帧
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,B)"  -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg

# 抽取I帧
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,I)"  -vsync vfr -pix_fmt nv21 -f segment -segment_time 0.01 ./%08d.yuv
 
# 抽取P帧
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,P)"  -vsync vfr -pix_fmt nv21 -f segment -segment_time 0.01 ./%08d.yuv
 
# 抽取B帧
ffmpeg -i 666051400.mp4 -vf "select=eq(pict_type\,B)"  -vsync vfr -pix_fmt nv21 -f segment -segment_time 0.01 ./%08d.yuv
 
#注:-segment_time需设置为小于1/fps的数

由于ffmpeg抽取帧并无法按照时间戳来命名,需要手动将ffprobe提取出来的帧时间与抽取帧的图片进行对应重命名

2. 抽取视频场景转换帧

在视频中可以按照视频的镜头切换可以将视频分为不同的场景(scene boundarie)。视频场景抽取算法一般是使用帧间的相似差异程度来衡量,如果视频帧大于某一个阈值则认为是一个新的场景,否则不是一个新的场景。

使用ffmpeg抽取视频场景转换帧的命令:

# 其中0.1表示帧为新场景的概率
ffmpeg -i 666051400.mp4 -filter:v "select='gt(scene,0.1)',showinfo" -f null - 2>&

3. 均匀抽帧

通过ffmpeg根据时间均匀抽帧的命令行:

# -r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧。
ffmpeg -i 666051400.mp4 -r 1 -q:v 2 -f image2 ./%08d.000000.jp

4. 抽取制定时间的帧

通过ffmepg抽取指定时间的帧:

# 耗时0.07s
ffmpeg -ss 00:00:30 -i 666051400.mp4 -vframes 1 0.jpg
 
# 耗时0.68s
ffmpeg -i 666051400.mp4 -ss 00:00:30  -vframes 1 0.jpg


版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭