2

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

4

1 回答 1

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

你去...宽度和高度。(:

于 2011-01-26T12:57:20.080 回答