我正在使用Media Foundation(MFT)的H264编码器。
我从中提取了SPS和PPS,因为我需要它来进行流畅的流媒体。
MSDN说的是字节数用于在每个NALU可以1, 2, or 4
之前出现的长度字段。这都是网络字节顺序。如您所见,缓冲区中的前4个字节为0, 0, 0, 1
。如果我们应用任何可能的长度,我们什么都得不到。如果用于长度的字节数是1,则长度为零,如果为2,则长度再次为零。如果是4,那么第一个NALU的长度是1?!并且,这是不正确的。
有谁知道我应该如何解释这个SPS和PPS连接在一起?
答案 0 :(得分:5)
答案很简单:数据有效并根据附件B格式化,前缀为起始码00 00 00 01
,而不是行程长度编码。
H.264 extradata (partially) explained - for dummies
附件B格式
采用这种格式,每个NAL前面都有一个四字节的起始码:0x00 0x00 0x00 0x01因此,以便知道NAL的起始位置和位置 停止,你需要读取比特流的每个字节,寻找 这些开始代码,如果你需要在它们之间进行转换,这可能会很痛苦 这种格式和其他格式。
有关H.264 spec的更多详情 - 可免费下载。第326页以“附录B - 字节流格式”开头。