AVCC 和 Annex B 解釋

在視頻編碼中,AVCC(AVC Configuration Box)和Annex B是兩種不同的H.264(也稱為AVC)視頻數(shù)據(jù)存儲格式。它們主要用于在不同的容器格式中存儲和傳輸H.264視頻數(shù)據(jù)。

AVCC(AVC Configuration Box)
定義: AVCC格式主要用于MP4、M4V、MOV等基于ISO/IEC 14496-15標準的文件格式。
特征:
視頻數(shù)據(jù)以NALU(Network Abstraction Layer Unit)的形式存儲,但沒有起始碼。
每個NALU的前面有一個表示NALU大小的4字節(jié)長度字段。
AVCC頭包含SPS(序列參數(shù)集)和PPS(圖像參數(shù)集)等配置信息,用于初始化解碼器。
使用場景: 常見于文件存儲和某些流媒體協(xié)議,例如DASH。
Annex B
定義: Annex B格式定義在H.264的Annex B部分,常用于TS(Transport Stream)和RTP(Real-time Transport Protocol)等。
特征:
每個NALU以0x000001或0x00000001起始碼開始。
沒有NALU大小的長度字段,解碼器通過起始碼識別NALU邊界。
起始碼后面緊跟NALU數(shù)據(jù)。
使用場景: 常見于實時流媒體傳輸協(xié)議,如RTMP、MPEG-TS。
轉(zhuǎn)換示例
在某些情況下,需要在這兩種格式之間進行轉(zhuǎn)換,例如從MP4文件中提取視頻數(shù)據(jù)并通過RTMP流傳輸。這需要將AVCC格式轉(zhuǎn)換為Annex B格式。

從AVCC轉(zhuǎn)換為Annex B
讀取AVCC格式數(shù)據(jù):

跳過4字節(jié)長度字段,讀取NALU數(shù)據(jù)。
添加起始碼:

在NALU數(shù)據(jù)前添加0x00000001或0x000001起始碼。
代碼示例
下面是一個簡單的從AVCC格式轉(zhuǎn)換為Annex B格式的代碼示例(偽代碼):

void ConvertAVCCtoAnnexB(const uint8_t* avccData, size_t avccSize, std::vector<uint8_t>& annexBData) {
    size_t offset = 0;
    while (offset < avccSize) {
        // 讀取NALU長度
        uint32_t naluLength = (avccData[offset] << 24) | (avccData[offset + 1] << 16) | (avccData[offset + 2] << 8) | avccData[offset + 3];
        offset += 4;

        // 添加起始碼
        annexBData.push_back(0x00);
        annexBData.push_back(0x00);
        annexBData.push_back(0x00);
        annexBData.push_back(0x01);

        // 復制NALU數(shù)據(jù)
        annexBData.insert(annexBData.end(), avccData + offset, avccData + offset + naluLength);
        offset += naluLength;
    }
}

示例代碼解釋
讀取NALU長度: 從AVCC數(shù)據(jù)中讀取4字節(jié)的NALU長度字段。
添加起始碼: 在轉(zhuǎn)換后的數(shù)據(jù)中添加起始碼。
復制NALU數(shù)據(jù): 將實際的NALU數(shù)據(jù)從AVCC數(shù)據(jù)中復制到Annex B格式數(shù)據(jù)中。
通過這種方式,可以在不同存儲和傳輸場景中靈活處理H.264視頻數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容