簡體   English   中英

h265:從位流文件中解析切片頭

[英]h265: parsing slice header from bitstream file

我需要使用Python BitStream從HEVC比特流中讀取POC編號。 目前,我閱讀了最終單位標題。 有一種簡單的方法可以得到它嗎?

我已啟用跟蹤HM14.0,但EncTrace.txt並未包括我的所有數據包。

任何想法?

編輯:我附上我的python代碼。 這是我的比特流文件

import re

import collections
import bitstring
from bitstring import BitStream, BitArray, ConstBitStream, pack
from bitstring import ByteStore, offsetcopy
import unicodedata


text_file = open("nal_Output.txt", "wb")

s = BitStream(filename='new.str')

#Find number of packets
pcks = list(s.findall('0x000001', bytealigned=True))


s.pos=0
num_of_pcks = len(pcks)
num_of_POC_pcks =0
for x in range(0, num_of_pcks):
    s.pos =pcks[x]+24
    #print x
    if x < num_of_pcks-1:
        no_p = pcks[x+1]-pcks[x]-24
    else:
        no_p = 0

    forbidden_zero_bit  = s.read('uint:1')
    nal_unit_type = s.read('uint:6')
    nuh_layer_id = s.read('uint:6')
    nuh_temporal_id_plus1 = s.read('uint:3')

    #nal unit type 39 is for SEI messages: one byte message
    if int(nal_unit_type) >31 :
        #print 'nal=39'
        #size_of_pck = (no_p+24+8)/8
        packet = 0
    elif int(nal_unit_type) <32:
        #print int(nal_unit_type)
        num_of_POC_pcks = num_of_POC_pcks+1
        size_of_pck = (no_p+24)/8
        text_file.write("NumBytesInNALunit: {0}\n".format(str(size_of_pck)))
    s.read(no_p)

print num_of_POC_pcks 

text_file.close()

標准中的第8.3.1章告訴您PicOrderCntVal是如何派生的。 在python中,這並非易事……

使用引用SW ,在source/Lib/TLibDecoder/TDecCAVLC.cpp中的函數TDecCavlc::parseSliceHeader中解析切片標頭,這也是讀取POC值的位置。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM