zoukankan      html  css  js  c++  java
  • 如何从H.263 raw data中取出视频的宽高以及Framerate

    看了MP4Box的源码,后来对照代码参看了H.263的Specification,取宽高的 方法如下:

    1. 读前22个bit(不是byte),然后转成int,这个值应该是32(0x20)。这是H.263 stream的start code,表示这是一个H.263的stream

    2. 读第36-38bit,转成int,这个值就表示该263 stream的format,对应表如下:
    "000" - forbidden
    "001" - sub-QCIF
    "010" - QCIF
    "011" - CIF
    "100" - 4CIF
    "101" - 16CIF
    "110" - reserved
    "111" - extended PTYPE

    具体到宽高,这里直接引用MP4Box中的代码(变量fmt就是36-38bit表示的值): 

     static void h263_get_pic_size(GF_BitStream *bs, u32 fmt, u32 *w, u32 *h)

    {
       switch (fmt) {
       
    case 1*= 128*= 96break;
       
    case 2*= 176*= 144break;
       
    case 3*= 352*= 288break;
       
    case 4*= 704*= 576break;
       
    case 5*= 1409*= 1152 ; break;
       
    default*= *= 0break;
       }
    }

     H.263 Specification中有一张sub-QCIF, QCIF...这些格式对应的宽高的表。


    至于framerate,我看MP4Box中处理是这样的:首先从 MP4Box的命令行中看用户有没有给定-fps,如果没有,则设成 15。我觉得我们的 代码可以首先采用上次我们讨论的方案,将1/duration得到,如果出现什么问题, 直接设成15即可。
  • 相关阅读:
    mxnet笔记
    8.1.18示例:使用forName()的扩展
    8.1.17使用1.2版本的用户自定义类装载器
    8.1.16 使用1.1版本的用户自定义类装载器
    8.1.13 _quick 指令
    8.1.12直接引用
    8.1.11编译时常量解析
    8.1.10装载约束
    8.1.8 解析CONSTANT_String_info入口
    8.1.7 解析CONSTANT_interfaceMethodref_info入口
  • 原文地址:https://www.cnblogs.com/super119/p/1924429.html
Copyright © 2011-2022 走看看