live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)
live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)
开发流媒体播放器的时候,特别是在windows mobile,symbian(S60)平台开发时,很可能遇到需要自己开发播放器的情况。
S60平台提供了CVideoPlayUtility接口可以实现流媒体播放器,但由于非开源,所以相对于自己开发播放器,很多操作受到限制。
live555主要用于网络流接收,ffmpeg则是对接收到的数据进行编码/解码。I帧,P帧,B帧是视频流中三种分类,其中I帧也就是关键帧
是基础帧,P帧一般根据I帧确定,而B帧需要前面两着的信息。
举例说:
the Input sequence for video encoder
1 2 3 4 5 6 7
I B B P B B I
Let's take 1,2,3.. as PTS for simplification
the out sequence for video encoder ( this equals the decoder sequence)
1 4 2 3 7 5 6
I P B B I B B
播放器LIVE555收到的序列顺序就应该是:
1 4 2 3 7 5 6
经过解码器解码,顺序又回到1 2 3 4 5 6 7这种正常顺序。
所以我们可以根据avcodec_decode_video来判断帧别。
avcodec_decode_video之后的顺序是一定的。严格按照1 2 3 4。。。这样的顺序来。
判断I帧,P,B帧方法:
(1):假如解码成功,则不是I帧就是P帧(根据AVFrame->keyframe判断是否是I帧)。
假如不是I帧,也不是P帧,则只能是B帧(通过pts判断)。
(2):采用AVFrame->pict_type综合pts的办法:
if(FF_I_TYPE==picture->pict_type)
{
Printlog("<II>");
}
else if(FF_P_TYPE==picture->pict_type)
{
Printlog("<PP>");
}
else if(FF_B_TYPE==picture->pict_type)
{
Printlog("<BB>");
}
else if(FF_S_TYPE==picture->pict_type)
{
Printlog("<SS>");
}
else
{
Printlog("<OtherType>");
}
正常情况下是不会打印出B帧的,因为解码成功的肯定是I帧或者是P帧.
转自:http://blog.csdn.net/linzhiji/article/details/5393647
转载于:https://www.cnblogs.com/retrieval/p/3623989.html
live555+ffmpeg如何提取关键帧(I帧,P帧,B帧)相关推荐
- python视频提取关键帧_如何使用Python提取视频的关键帧?
在很多场景下,我们不想或者不能处理视频的每一帧图片,这时我们希望能够从视频中提取出一些重要的帧进行处理,这个过程我们称为视频关键帧提取. 关键帧提取算法多种多样,如何实现主要取决于你对于关键帧的定义. ...
- FFmpeg批量提取视频的某一帧作为封面
命令是这样的: ffmpeg -i input.flv -ss 00:00:02 -frames:v 1 out.png 说明: -i input.flv 截取的视频的名字 -ss 00:00:02 ...
- 将视频分成一帧一帧python_python ffmpeg任意提取视频帧的方法
环境准备 1.安装 FFmpeg 音/视频工具 FFmpeg 简易安装文档 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 opencv- ...
- 视频提取关键帧工具类KeyFramesExtractUtils.py,动态支持三种取帧方式,关键参数可配置,代码经过优化处理,效果和性能更好。
同步上一期视频关键帧提取方法: 视频提取关键帧的三种方式[已调通]_君临天下tjm的博客-CSDN博客_视频关键帧提取关键代码如下:# -*- coding: utf-8 -*-"" ...
- python视频提取关键帧_一种视频关键帧提取算法的制作方法
本发明属于信息安全技术领域,涉及视频内容信息的提取,具体来说,是一种视频关键帧提取算法. 背景技术: 随着Internet的应用和普及,多媒体信息检索系统对社会各领域产生越来越大的影响.传统的信息检索 ...
- 视频提取关键帧的三种方式【已调通】
推荐优化后的视频关键帧提取方法,已经包装成工具类,代码做了优化,性能和效果更好. 视频提取关键帧工具类KeyFramesExtractUtils.py,动态支持三种取帧方式,关键参数可配置,代码经过优 ...
- 通过ffmpeg实时读取宇视摄像头的高清帧流数据,并保存4张图片进行4合一照片的生成。
通过ffmpeg实时读取宇视摄像头的高清帧流数据,并保存4张图片进行4合一照片的生成. FFmpeg视频解码过程 通常来说,FFmpeg的视频解码过程有以下几个步骤: 注册所支持的所有的文件(容器)格 ...
- ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损) 其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前) -s 控制输出格式大小 本人在一个视频稳定 ...
- shell命令 ffmpeg 批量提取视频的音频文件
ffmpeg命令提取音频,主要是for循环目录下的文件,判断是否是mp4结尾的文件,然后执行 ffmpeg命令. 下面上命令的代码 #! /bin/bash function rename() {cd ...
最新文章
- Swift5.1 语言参考(六) 声明
- linux 内存管理中的 rss 和 vsz
- DellEMC品牌正式启用50%是上一代的R730对比R74
- Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效
- 计算机二级vb考试查分,全国计算机二级考试VB程序设计复习试题
- CentOS7 DNS的添加
- python学习笔记:第19天 类的约束、异常、MD5和logging
- 前端学习(1221):使用过滤器格式化日期
- 用 mCustomScrollbar 滚动条插件实现滚动更新添加数据
- 使用国产化的TongWeb服务器使用手册
- 【layoutit!】基于 bootstrap 实现可视化布局工具
- Java+HTML预习笔记_20140610
- 关于使用J-Flash直接烧录bin文件的方法
- 企业信息化建设中流程梳理的步骤及方法
- for in在python中什么意思_python中for in的用法详解
- c语言.jpg图片转成数组_jpg图片不仅能转成PDF文档格式,还可以一键合并!
- 世界上第一台通用计算机是多少年诞生的,世界上第一台通用计算机ENIAC是( )年诞生的。...
- 加拿大曼尼托巴大学计算机专业几年,2020年加拿大曼尼托巴大学毕业时间是几月...
- 单片机数码管显示热敏电阻实测温度,
- cd src make install make[1]: Entering directory `/home/xuweiliang/redis/r 错误解析
热门文章
- VM安装rhel或linux后,声音很响,如何关闭
- Adaptive Feature Recombination and Recalibration for Semantic Segmentation: Application to Brain Tum
- 前端笔记 | CSS定位
- mysql的主要指标_mysql 主要性能指标
- python3读文件编码格式_使用不同的编码格式读取文件系统标准在Python3中
- android 8.0 iso6,微信8.0.6更新了什么?IOS系统微信8.0.6版本更新详情一览[多图]
- php里面get和post请求,php中GET和POST请求发送几种方法总结
- 无法支持python程序的编辑运行和调试_解决pycharm的Python console不能调试当前程序的问题...
- OpenCV-Python实战(10)——详解 OpenCV 轮廓检测
- c语言有n个人围成一圈用指针,c语言编写n个人围成一圈,按1、2、3报数,报到3的人退出,求最后留在圈中的人是最初n个人中的第几个(用指针实现)...