从原始mpeg4流中获取帧尺寸?

时间:2010-07-14 14:01:58

标签: c# video-processing mpeg-4

有谁知道我如何从原始视频比特流中检索mpeg4视频(非h264,即Mpeg4第2部分)的帧维度? 我正在为Windows媒体基础编写自定义媒体源,我必须提供需要帧大小的媒体类型。没有它就行不通。 有任何想法吗? 感谢

1 个答案:

答案 0 :(得分:3)

我没有得到你。您是否想知道正在流式传输的视频的宽度和高度?如果是这样(我想这是你正在寻找的“维度”)继承人:

  1. 解析此整数000001B0(十六进制)的流,它始终是您流式传输的第一件事。如果没有,请参阅流的SDP(如果您有,并搜索config=字段,那里它是......现在它只是一个Base16字符串!
  2. 读取所有字节,直到达到整数000001B6(十六进制)
  3. 您应该得到类似这样的内容(十六进制):000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. 这是“流配置标题”或框架或其他,确切名称是视频对象序列。它包含解码器解码视频流所需的所有信息。
  5. 读取最后4个字节(在我的示例中,它们用一个空格分隔 - A021E0A2
  6. 现在将这些字节视为一个32位无符号整数...
  7. 要获得宽度,请先读取前8位,然后将所得到的数字与<4>相乘
  8. 跳过接下来的7位
  9. 要获得高度,请阅读下一个9位
  10. 在伪代码中:

      WIDTH = readBitsUnsigned(array, 8) * 4;
      readBitsUnsigned(array, 7);
      HEIGHT = readBitsUnsigned(array, 9);
    
  11. 你去...宽度和高度。 (: