有谁知道我如何从原始视频比特流中检索 mpeg4 视频(非 h264,即 Mpeg4 第 2 部分)的帧尺寸?我目前正在为 Windows Media Foundation 编写自定义媒体源,我必须提供一个需要帧大小的媒体类型。没有它就行不通。有任何想法吗?谢谢
问问题
1783 次
1 回答
3
我不懂诶。您是否想知道正在流式传输的视频的宽度和高度?如果是这样(我猜这是您正在寻找的“维度”),方法如下:
- 解析此整数
000001B0
(十六进制)的流,它始终是您获得流式传输的第一件事。如果没有,请查看流的 SDP(如果有,然后搜索config=
字段,它就在那里……只是现在它是一个 Base16 字符串! - 读取所有字节,直到获得整数
000001B6
(十六进制) - 你应该得到这样的东西(十六进制):
000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
- 这是“流配置头”或帧或其他任何东西,确切的名称是视频对象序列。它包含解码器解码视频流所需的所有信息。
- 读取最后 4 个字节(在我的示例中,它们用一个空格分隔 --
A021E0A2
) - 现在将这些字节视为一个 32 位无符号整数...
- 要获得宽度,请读取前 8 位,然后将得到的值乘以 4
- 跳过接下来的 7 位
- 读取下一个 9 位的高度
在伪代码中:
WIDTH = readBitsUnsigned(array, 8) * 4; readBitsUnsigned(array, 7); HEIGHT = readBitsUnsigned(array, 9);
你去...宽度和高度。(:
于 2011-01-26T12:57:20.080 回答