提取H264Video流的尺寸
我正在尝试从H264流中获取尺寸(高度和宽度)。我知道要从mpeg2流中获取相同的详细信息,您必须查看序列头起始码((01B3))之后的四个字节。
H264可以使用相同的逻辑吗?我将不胜感激。
没有找到相关结果
已邀请:
4 个回复
肺鬼耙扮群
(NAL是H.264帧中的第一个字节),您可以在in1 as中找到它作为SDP中Base64编码的字符串,它是第一个逗号之前的第一个Base64字符串。其他用逗号分隔的字符串还有图片参数集...这是来自SDP
的一个SPS,您需要将类似的内容从Base64解码为字节数组。 然后,您必须提取该字节数组中紧跟着NAL UNIT HEADER的RAW BYTE SEQUENCE PAYLOAD!它通常是一个字节长,但请确保继续阅读... RBSP包含运行
函数所需的字节。因此,您需要先剥离NAL UNIT HEADER(一个或多个字节)。 这是从SPS NAL UNIT中提取RBSP字节的函数: 然后,当您拥有SPS(RBSP字节)时,您需要执行一个解析该字节数组中的位的函数。这是其中解析了所有参数的函数(可以在这里找到完整的文档:http://www.itu.int/rec/T-REC-H.264-201003-I/en及其免费版本): 在那里,您会看到一些奇怪的东西...首先,视频尺寸的计算如下:
其次,也是最重要的一点,在此代码表的DESCRIPTOR列中,说明了如何读取第一列中的粗体文本参数。这是其中的值的含义: u(N)-读取一个N位长的无符号数字 s(N)-读取一个N位长的有符号数 ue(v)-读取一个无符号的Exp-Golomb数(v是可变长度的,因此与
相同) se(v)-读取签名的Exp-Golomb编号 这是您的Exp-Golomb解码器派上用场的地方... 因此,实现此功能,解析SPS,您将获得Width和Height。请享用... :)
拭十年
厘恼轨
孤捷侩
,
和
等于2。 变量cropUnitX和cropUnitY的派生如下: 如果
等于
,则
和
推导为:
否则(
等于
,
或
),
和
推导为:
现在,您可以在上述公式中使用
和
来获取帧大小的正确值。