我看到你最近问了很多关于视频的问题。说到视频;没有所谓的“简单方法”。
这是 AVC 的答案。获取 H264Video 流的尺寸
首先,fps 通常不在 ES 中编码。那是容器级别的东西。在 AVC/HEVC 中有一个地方,但你不应该指望它被填写。
您已经找到了起始代码。作为记录,起始代码是 2 个或多个 00,但后面是 01(它并不总是 00 00 00 01,它可以是 00 00 01、00 00 00 00 01 等)如果这个序列曾经出现在 NALU 中自然,它必须逃脱。所以,在 NALU 有效载荷中编码 00 00 01 时,将更改为 00 00 03 01。我提到这一点,因为如果你在解析时遇到这个序列,你必须忽略emulation prevention
字节 (03) 的存在。删除了字节的 ESemulation prevention
称为原始字节序列有效负载 (rbsp)。
起始码后的前两个字节有 nal_unit_header。类型存储位 1-6 ( ( NALU[0] >> 1 ) & 0x3F )
。分辨率存储在 SPS_NUT 中,即 33。一旦有了 SPS,就可以对其进行解析。
这给我们带来了指数哥伦布编码。基本上一个exponential golomb encoded
整数(缩写ue
为无符号或se
有符号)是一个可变长度整数。要解码,请计算前导零。此计数将告诉您整数的长度(以位为单位)。接下来,您读取那么多位并减去 1 以获得您的整数。带符号的变体是相同的,除了最后一位是符号位,例如:
1 = 0 = 0
010 = 1 = 1
011 = 2 = -1
00100 = 3 = 2
00101 = 4 = -2
接下来使用 Rec 的 7.3.2.2 中的表解析 sps。ITU-T H.265 (04/2013)(第 33 页)
并且您可以从 pic_width_in_luma_samples pic_height_in_luma_samples 和 conformance_window 参数中计算出滞留量。