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

  • 抽取视频关键帧(I/P/B)
  • 抽取视频场景转换帧
  • 根据时间进行均匀抽帧
  • 抽取指定时间的视频帧

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

视频关键帧(Video Keyframes)是用于视频压缩和视频编解码的帧,视频关键帧是包含了完整信息的帧,其他的非关键帧将会使用与关键帧的差值进行压缩。视频帧具体可以分为IPB帧三种:
I帧表示关键帧,是最完整的帧画面,一般视频封面都选择I帧;
P帧单预测帧,利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码;
B帧双向预测帧,利用双向帧进行预测编码;
一般情况下关键帧I帧是信息最多的帧,也是用途最多的帧。在视频检索和视频分类任务中一般都借助I帧来完成,I帧数量少包含的信息却是最多的。

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

ffprobe -i 666051400.mp4 -v quiet -select_streams v -show_entries frame=pkt_pts_time,pict_type

使用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

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

2. 抽取视频场景转换帧

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

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

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

3. 均匀抽帧

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

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

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
ffmpeg -i input.mp4 -ss 1:05 -t 10 output.mp4
ffmpeg -ss 1:05 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4

-ss 5指定从输入视频第1:05秒开始截取,-t 10指明最多截取10秒;
把-ss 1:05放到-i前面,与原来的区别是,这样会先跳转到第1:05秒在开始解码输入视频,而原来的会从开始解码,只是丢弃掉前1:05秒的结果。
-c:v 和 -c:a分别指定视频和音频的编码格式。
-c:v copy -c:a copy标示视频与音频的编码不发生改变,而是直接复制,这样会大大提升速度。

多媒体视频开发_(30)使用ffmpeg在视频中进行抽帧相关推荐

  1. 视频剪辑工具,从指定秒数中随机抽帧,以图片格式保存

    视频太多,如何剪辑,比如说按指定的秒数从中随机抽帧,并将帧以图片格式保存到电脑上呢?下面随小编一起来试试. 需要哪些工具? 视频素材若干 怎么快速添加? 打开[媒体梦工厂],在"视频封面&q ...

  2. 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译

    转自:https://juejin.im/post/5e130df55188253a8b42ebac 目录 一.Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框 ...

  3. Android音视频开发基础(七):视频采集-系统API基础

    前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了<Android 音视频从入门到提高 - 任务列表>.本文是Android音视 ...

  4. 音视频开发成长之路与音视频知识点总结

    音视频涉及语音信号处理.数字图像处理.信息论.封装格式.编解码.流媒体协议.网络传输.渲染.算法等.在现实生活中,音视频发挥着越来越重要的作用,如视频会议.直播.短视频.播放器.语音聊天等.所以从事音 ...

  5. Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析

    Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析 本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表 ...

  6. 腾讯视频视频下载_如何下载腾讯视频

    今天继续给大家分享腾讯视频方面的内容.一般来说vip会员可以提前点播热播剧,对于追剧党来说是非常好的,不过是否开通也要根据自己需求,毕竟价格也不低啊,而且还是有一些用户能够通过一些简单但不值得提倡的方 ...

  7. python音视频开发_Python音视频开发:消除抖音短视频Logo的图形化工具实现

    一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现消除视频Logo的四种方法,并提供了详细的 ...

  8. Python音视频开发:消除抖音短视频Logo和去电视台标

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 对于带Logo(如抖音Logo.电视台标)的视频,有三种方案进行Logo消除: 直接将对应区域用对应图像替换: 直接将对应区域模糊化: 通过变换将要 ...

  9. Python音视频开发:消除抖音短视频Logo的图形化工具实现

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...

  10. 教你在多个视频中随机抽帧画面出来,置入到各个视频封面上

    通过抽帧在视频里随机抽取一幅画面图片出来,再次导入到各个视频上作为封面图片,这种的剪辑该如何操作呢?下面我们用一个媒体梦工厂剪辑的工具就可实现,一起看详细教程操作. 准备多个视频保存在同一文件夹中,可 ...

最新文章

  1. 硬回车与软回车[转]
  2. 3.db2性能和优化
  3. python2中的print语句可以不用小括号。_Python 2与Python 3的区别
  4. 盘点中国互联网行业10年2万多起投融资,17年投融资形势走向何处
  5. 设计模式:装饰模式(Decorator)
  6. python微信跳一跳小游戏刷分
  7. PHP爬虫音乐,PHPCrawl爬虫库实现抓取酷狗歌单
  8. 前端学习(2376):项目初始化
  9. python-标识符与变量-标识符的命名规范
  10. ubuntu 14.04 将窗体button移到右边
  11. CSS清除浮动的五种常用方法
  12. Android之Intent传递数据
  13. Import Changes from Direct3D 11 to Direct3D 12
  14. python调用java方法_python调用Java方法传入HashMap ArrayList
  15. 【IDEA】关于 IDEA 中新建 web 项目的 webapp 文件夹没有小蓝点 ,启动服务,访问不到解决方案
  16. java关键字只static
  17. 如果Google统治世界[组图]
  18. php基本语法的几点备忘
  19. python语言是不是胶水语言_不会吧,不会吧,不会还有人觉得Python是胶水语言吧?...
  20. 长连接和短连接的定义区别,以及应用场景

热门文章

  1. 有趣的Javascript:只需一个JS让万恶的IE5、IE6、IE7、IE8全都支持H5原生Canvas绘图(有演示demo)
  2. arm应用程序之文件读写操作差异open与fopen
  3. 【Pygame小游戏】确实会玩—教你如何在”吃豆豆“上完美躺赢……(收藏起来偷偷学)
  4. 【二】网络空间安全综述
  5. 阿里中台搞了3年,凉了?网传:副总裁玄难“背锅”,辞职创业!咸鱼放弃维护 Flutter!...
  6. win7下桌面IE快捷方式无法删除解决方法
  7. 为什么我怎么也理解不了波粒二象性,是因为智商不够吗?
  8. 小福利,运用scrapy爬虫框架高效爬取数据和存储数据
  9. Matlab求特征值和特征向量 + find函数的基本简单用法
  10. 无法启动计算机打印机服务程序,Windows10下使用打印机时提示打印后台处理程序服务没有运行怎么办...