zoukankan      html  css  js  c++  java
  • mpeg4视频中,I帧、p帧、B帧的判定

    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;
    }

     

  • 相关阅读:
    对于delphi 三层的理解
    XE6调用android标准功能
    修复 XE7 Frame 内 PopupMenu 快捷键失效问题 by 龟山阿卍
    最大熵模型 二
    最大熵模型
    算法复习-平面内极大值点
    算法复习-生成全排列
    算法复习-归并排序
    算法复习-快速排序
    连续特征的离散化
  • 原文地址:https://www.cnblogs.com/ManMonth/p/1666328.html
Copyright © 2011-2022 走看看