1. 程式人生 > >h264 I幀的判斷

h264 I幀的判斷

H264資料的NALU 頭的格式如圖2 所示:

 

                                                                                                                   


        F:forbidden_zero_bit.1 位,如果有語法衝突,則為 1。當網路識別此單元存在位元錯誤時,可將其設為 1,以便接收方丟掉該單元。 
        NRI:nal_ref_idc.2 位,用來指示該NALU 的重要性等級。值越大,表示當前NALU越重要。具體大於0 時取何值,沒有具體規定。

 Type:5 位,指出NALU 的型別。具體如表1 所示:

 

                                                                                    


      需要特別指出的是,NRI 值為 7 和 8 的NALU 分別為序列引數集(sps)和影象引數集(pps)。引數集是一組很少改變的,為大量VCL NALU 提供解碼資訊的資料。其中序列引數集作用於一系列連續的編碼影象,而影象引數集作用於編碼視訊序列中一個或多個獨立的影象。如果*沒能正確接收到這兩個引數集,那麼其他NALU 也是無法解碼的。因此它們一般在傳送其它 NALU 之前傳送,並且使用不同的通道或者更加可靠的傳輸協議(如TCP)進行傳輸,也可以重複傳輸。

 

判斷nal_unit_type是否為5、7、8、2,是則可認為是I幀,程式碼如下:

static bool isH264iFrame(byte[] paket)

    {

        int RTPHeaderBytes = 0;

 

        int nal_type = paket[RTPHeaderBytes + 1] & 0x1F; 

        if (nal_type == 5 || nal_type == 7 || nal_type == 8|| nal_type == 2)

        {

            return true;

        }

 

        return false;

   }

--------------------- 本文來自 一葉知秋dong 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/dxpqxb/article/details/13289205?utm_source=copy