2010-07-14 105 views
2

没有人知道我可以从原始视频比特流中检索mpeg4视频(非h264,即Mpeg4第2部分)的帧尺寸吗? 我目前正在为Windows Media Foundation编写一个自定义媒体源,我必须提供一个需要帧大小的媒体类型。没有它,它就无法工作。 有什么想法? 谢谢从原始mpeg4流获取帧维度?

回答

3

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

  1. 解析流为这个整数000001B0(十六进制),其总是你流的第一件事。如果没有,请参阅流的SDP(如果有的话),并搜索config=字段,那里是...现在只有它是Base16字符串!
  2. 读取所有字节,直到获得整数000001B6 (十六进制)
  3. 你应该得到这样的事情(十六进制):000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. 这是“流配置页眉”或框架或什么的,确切的名称是视频对象序列它拥有所有的信息解码器需要。解码视频流
  5. 阅读最后4个字节(在我的例子中它们被一个空格隔开 - A021E0A2
  6. N流观察这些字节作为一个32位无符号整数...
  7. 为了得到宽度读前8位,然后乘你4
  8. 跳过得到什么接下来的7位
  9. 要获得高度读下一个9个比特
  10. 在伪码:

    WIDTH = readBitsUnsigned(array, 8) * 4; 
        readBitsUnsigned(array, 7); 
        HEIGHT = readBitsUnsigned(array, 9); 
    

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

+1

这是正确的吗?我试图解码流的帧我知道是1280x1024。有了这个逻辑,宽度不能超过1020,高度不能超过511. – Ninjammer 2013-09-22 23:14:43

+0

WIDTH应该乘以乘以8而不是4,HEIGHT应该乘以2也是从最后5个字节而不是4个字节读取的整数。 – 2017-05-02 12:56:31