1

在原始 HEVC/H265 基本流中,如何找到一个视频帧的第一个 NALunit?访问单元分隔符/access_unit_delimiter_rbsp() 似乎是一个不错的选择,但在视频流中是可选的。

4

1 回答 1

0

我认为您应该阅读 hevc 规范。我从来没有这样做过,但我可以通过我在 HM 编解码器方面的经验提供一点帮助。

一开始,比特流中的当前位置为 0,解码器提取并丢弃所有字节(leading_zero_8bits),直到找到 0x00000001 或 0x000001,然后丢弃前面提到的 3 或 4 个字节(zero_bytestart_code_prefix_one_3bytes),然后读取所有 3 个字节(循环中)直到他找到 0x000003 或流的结尾,这是实际数据。然后,如果它不是流的结尾,也不是 0x00000001 或 0x00001,他将丢弃所有字节(trailing_zero_8bits),直到找到它们,这意味着新的 NALu 或流的结尾。但是,一个帧可以用超过 1 个 NALu 来表示。

之后,他通过在解码开始前清除EmulationPreventionByte和删除 将有效负载转换为 RBSP 。cabac_zero_word

于 2018-06-29T08:51:16.060 回答