mpeg4视频中,I帧、p帧、B帧的判定(转载)

2011-11-28 9:45

http://www.360doc.com/content/11/0718/17/474846_134326279.shtml

mpeg4的每一帧开头是固定的:00 00 01 b6,那么我们如何判断当前帧属于什么帧呢?在接下来的2bit,将会告诉我们答案。注意:是2bit,不是byte,下面是各类型帧与2bit的对应关系:

  00: I Frame
  01: P Frame
  10: B Frame 

为了更好地说明,我们举几个例子,以下是16进制显示的视频编码:

  00 00 01 b6 10 34 78 97 09 87 06 57 87 ……                             I帧

  00 00 01 b6 50 78 34 20 cc 66 b3 89 ……                                  P帧

  00 00 01 b6 96 88 99 06 54 34 78 90 98 ……                              B帧

下面我们来分析一下为什么他们分别是I、P、B帧

  0x10 = 0001 0000

  0x50 = 0101 0000

  0x96 = 1001 0100 

大家看红色的2bit,再对照开头说的帧与2bit的对应关系,是不是符合了呢?

下面给出一段c++代码供大家参考:

switch(buf[i] & (BYTE)0xc0)
{
case 0x00:
    //I Frame
    break;
case 0x40:
    //P Frame
    break;
case 0x80:
    //B Frame
    break;
default:
    break;
}

时间: 2024-09-28 06:56:13

mpeg4视频中,I帧、p帧、B帧的判定(转载)的相关文章

ffmpeg中怎么编程实现获取视频中某指定的一帧?

问题描述 ffmpeg中怎么编程实现获取视频中某指定的一帧? ffmpeg中怎么编程实现获取视频中某指定的一帧?不是通过遍历,而是直接跳到指定帧,ffmpeg中有没有有相关的函数? 解决方案 /** Seek to the keyframe at timestamp. 'timestamp' in 'stream_index'. * @param s media file handle @param stream_index If stream_index is (-1), a default

ubuntu-ffmpeg提取视频中的帧保存为图片的序号如何从0开始

问题描述 ffmpeg提取视频中的帧保存为图片的序号如何从0开始 问题是这样的:我在unbuntu环境下,安装好了ffmpeg,现在希望通过ffmpeg的命令行提取出视频中的帧并保存为图片,这个功能用以下已经实现: ffmpeg -i yourVideo.mp4 -vf select='eq(pict_type,I)' -vsync 2 -s 160x90 -f image2 %d.jpeg 以上命令虽然能截取视频中的帧并保存为图片,并且通过命令参数: -f image2 test%d.jpeg

数据帧-C#中多次重复发送一帧,怎么实时显示到窗体

问题描述 C#中多次重复发送一帧,怎么实时显示到窗体 有一个数据包,有帧头桢尾,数据,共22个字节,通过调试工具发送出去,并实时显示到窗体,并显示帧数.求助

基于DirectShow的MPEG-4视频传输系统的研究与实现

1 引言    近年来,随着国民经济的发展,社会各个部门对于视频监视系统的需求越来越多.但目前的很多监视系统都跟具体的硬件相关,必须要具体的采集卡的支持才能实现.所以有必要开发一种具有通用性的视频监视系统,用普通的摄像头就能实现视频的采集.     基于DirectShow的开发能很灵活地控制音视频的效果,所以选择DirectShow这种可扩展性好的技术做开发对以后的应用升级很有帮助.此外, 为了实现流媒体传输控制的策略,流媒体的传输和回放也是应解决的问题之一.由Microsoft提供的Dire

如何利用opencv实现在视频中每隔固定的n像素列数取一副图像?

问题描述 如何利用opencv实现在视频中每隔固定的n像素列数取一副图像? 在视频中,视频向前播放,视频画面每隔固定的像素列数n后,取当前的画面.各位大神有没有思路? 解决方案 视频不是以帧的形式播放的吗?那怎么实现你这种方法哦.除非你的n个列数就是一幅图像列数

ubuntu-ffmpeg 截取图片的时间对应于原来视频中的时间点如何获取

问题描述 ffmpeg 截取图片的时间对应于原来视频中的时间点如何获取 问题是这样的:我在ubuntu环境下,使用ffmpeg的命令行来截取图片,命令采用如下方式: ffmpeg -i yourVideo.mp4 -vf select='eq(pict_type,I)' -vsync 2 -s 160x90 -f image2 %d.jpeg 以上命令虽然能截取视频中的帧并保存为图片,并且通过命令参数: -f image2 test%d.jpeg 指定了截取的图片是按照数字累加的方式命名的,即:

如何使用ffmpeg从视频中提取图片

如何使用ffmpeg从视频中提取图片 你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程序,它可以用来转码媒体文件.它是领先的多媒体框架FFmpeg的一部分,其有很多功能,比如解码.编码.转码.混流.分离.转化为流.过滤以及播放几乎所有的由人和机器创建的媒体文件. 在这个框架中包含有各种工具,每一个用于完成特定的功能.例如,ffserver能够将多

视频处理-视频中提取字幕基于opencv做的

问题描述 视频中提取字幕基于opencv做的 目前是基于office的modi的ocr做的,但是有的视频截的图片可以识别,有的图片背景色变化不能识别,二值化也乱码 解决方案 opencv提取视频每一帧OpenCV提取视频中的每一帧sobel化保存到本地 解决方案二: 推荐你一本书,Opencv 计算机视觉编程攻略.第十一章有Opencv处理视频的程序. 解决方案三: 第一次发帖呀,有大神在吗 解决方案四: 有人吗?有人给个思路吗,sobel不行啊啊 解决方案五: 就是这种的图片有人知道怎么处理吗

【ICCV 2017论文笔记】我们应当如何理解视频中的人类行为?

背景介绍 该文主要对视频行为理解中的行为分类( Action Recognition) 和时序行为检测( Temporal Action Detection) 两个问题进行了讨论,这两个领域及相关工作的具体介绍可见我之前的文章行为识别介绍,时序行为检测介绍.简单来说,行为分类是要给一段分割好的短视频(通常只包含一段人类动作)进行动作种类的分类,而时序行为检测则主要针对较长的未分割视频,除了要对视频中人类行为的种类进行分类外,还需要定位动作的时序边界.在这两个方向中,该文则更注重对行为分类问题的讨