在一个原始的HEVC/H265基本流中,如何找到一个视频帧的第一个NALunit?Access unit delimiter/access_unit_delimiter_rbsp()似乎是不错的选择,但在视频流中是可选的。
发布于 2018-06-29 16:51:16
我认为您应该阅读hevc规范。我从来没有这样做过,但我可以通过我在HM编解码器中的经验提供一些帮助。
在比特流中的当前位置开始是0,解码器提取并丢弃所有字节( leading_zero_8bits
),直到他找到0x00000001或0x000001,然后丢弃前面提到的3或4个字节( zero_byte
和start_code_prefix_one_3bytes
),然后他读取所有3个字节(在循环中),直到他找到0x000003或流的结尾,这是实际数据。然后,如果不是流的结尾,也不是0x00000001或0x00001,他将丢弃所有字节(trailing_zero_8bits
),直到找到它们,这意味着新的NALu或流的结尾。但是,一个帧可以用1个以上的NALu表示。
在此之后,他通过在解码开始之前清除EmulationPreventionByte
和删除cabac_zero_word
来将有效负载转换为RBSP。
https://stackoverflow.com/questions/49080891
复制相似问题