使用ffmpeg进行抽帧


一、背景

二、基本方式

2.1 抽取视频中关键帧(IPB帧)

Video keyframes是视频编解码中关键帧。

  • I帧信息最为丰富,是具有完整信息的帧,一般视频封面都选择I帧。
  • P帧是单向预测帧,一般依赖前面的I或者P帧进行进行帧间预测。
  • B帧数双向预测帧,一般利用双向帧进行预测。
2.1.1 使用ffprobe提取帧pts信息
ffprobe -i input.mp4 -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type

ffmpeg抽取帧无法按照时间戳进行命令,需要将ffprobe提取的帧时间与抽取帧的图片进行对应的重命。

#抽取I帧
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
#抽取P帧
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,P)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
#抽取B帧
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,B)" -vsync vfr -qscale:v 2 -f image2 ./%08d.jpg
2.2 抽取视频场景转换帧

在场景转换过程中会出现相邻场景相似差异比较大的情况,可以用相似度差异来判断是否转换到新的场景。

ffmpeg -i input.mp4 -filter:v "select='gt(scene,0.1)',showinfo" -f null - 2>&1
2.3 均匀抽帧
# -r 指定每秒抽取图片的数量,1 frame/sec
ffmpeg -i input.mp4 -r 1 -q:v 2 -f image2 ./%08d.jpg
2.4 指定时间点抽帧
 ffmpeg -i test_text_detect.mp4 -ss 00:00:01 -vframes 1 ./%08d.jpg

原文

原文


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM