0

我正在使用 Media Foundation (MFT) 的 H264 编码器。
我从中提取了 SPS 和 PPS,因为我需要它来进行流畅的流式传输。
MSDN 说每个 NALU 之前出现的长度字段使用的字节数可以是1, 2, or 4. 这都是按网络字节顺序排列的。如您所见,缓冲区中的前 4 个字节是0, 0, 0, 1. 如果我们应用任何可能的长度,我们将一无所获。如果用于长度的字节数为1,则长度为零,如果为2,则长度再次为零。如果是4,第一个NALU的长度是1?!而且,这是不正确的。
有人知道我应该如何解释这个 SPS 和 PPS 连接在一起吗?

提取的 SPS + PPS

4

1 回答 1

5

这里的答案很简单:数据是有效的,并且根据附件 B 格式化,以起始代码为前缀,00 00 00 01而不是运行长度编码。

H.264 extradata(部分)解释 - 用于傻瓜

附件 B 格式

在这种格式中,每个 NAL 前面都有一个四字节起始码:0x00 0x00 0x00 0x01 因此,为了知道 NAL 从哪里开始和在哪里停止,您需要读取比特流的每个字节,寻找这些起始码,如果您需要在此格式和其他格式之间进行转换,这可能会很痛苦。

有关H.264 规范的更多详细信息- 可免费下载。第 326 页以“附件 B - 字节流格式”开头。

于 2013-08-02T19:32:56.193 回答