999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

H.264碼流結構的分析

2008-12-31 00:00:00王志剛
電腦知識與技術 2008年36期

摘要:H.264是新一代視頻編碼標準,具有廣泛的應用前景。本文主要研究了H.264碼流的問題。首先,介紹了H.264的簡單框架;其次,對碼流結構進行了分析,并概括出了碼流結構圖;最后,結合一個簡單試驗,給出了從H.264碼流中取得圖像寬度和高度的方法。

關鍵詞:H.264;NAL;碼流結構

中圖分類號:TP37文獻標識碼:A 文章編號:1009-3044(2008)36-2751-02

Analysis on the structure of coding streaming in H.264

GAO Qing, WANG Zhi-gang

(School of Computer Science Technology, Soochow University,Suzhou 215006,China)

Abstract: H.264 is the newest video coding standard, and it will be widely used. In this article, the problem of the structure of coding streaming in H.264 is discussed. Firstly, the simple profile of H.264 video is introduced. Secondly, the structure of coding streaming is discussed , and then give the graph on it. Finally, by a simple experiment, give the method of getting picture’s width and height from the coding stream.

Key words: H.264;NAL;structure of coding streaming

1 引言

H.264是新一代視頻編碼標準,具有廣泛的應用前景,是ITU-T的視頻編碼專家組(VCEG)和 ISO/IEC的活動圖像編碼專家組(MPEG)的聯合視頻組開發的一個新的數字視頻編碼標準,它既是ITU -T的H.264,又是ISO/IEC的MPEG-4的第10部分。H.264和以前的標準一樣,也是DPCM加變換編碼的混合編碼模式。它的應用目標廣泛,可滿足各種不同速率、不同場合的視頻應用,具有較好的抗誤碼和抗丟包的處理能力。H.264的基本系統無需使用版權,具有開放的性質,能很好地適應IP和無線網絡的使用,這對目前因特網傳輸多媒體信息、移動網中傳輸寬帶信息等都具有重要意義。

2 H.264框架介紹

H.264中定義了3個框架[2],每個框架都支持一系列的編解碼功能,相應的有一系列的應用。下面作下簡單的介紹:

1) 基線框架(Baseline Profile):它作為H.264的一個簡單版本,應用面很廣。它支持幀間和幀內編碼,支持I幀和P幀,支持CAVLC等,其主要應用是可視電話視頻會議,無線通信等。

2) 主框架(Main Profile):包括支持交錯視頻,支持B幀,主要是在幀間編碼時使用,權重預測,熵編碼使用,支持CABAC等。它的主要應用是視頻存儲和電視廣播。采用了多項提高圖像質量和增加壓縮比的技術措施,可用于SDTV,HDTV,DVD等。

3) 擴展框架(Extended Profile):不支持交錯視頻和CABAC,但增加了一些在進行比特流切換時有效的幀模式,SI Switching I幀和SP Switching P幀,能夠有效的提高從錯誤中恢復的能力。它的主要應用是各種網絡的視頻流傳輸應用。

3 H264碼流結構

3.1 H264分層結構

H.263定義的碼流結構是分級結構,共四層。自上而下分別為:圖像層(picturelayer)、塊組層(GOB layer)、宏塊層(macroblock layer)和塊層(block layer)。而與H.263相比,H.264的碼流結構和H.263的有很大的區別,它采用的不再是嚴格的分級結構。

H.264的功能分為兩層,視頻編碼層(VCL)和網絡提取層(NAL)VCL數據即被壓縮編碼后的視頻數據序列。在VCL數據要封裝到NAL單元中之后,才可以用來傳輸或存儲。

NAL單元格式[2] 如下表所示:

RBSP:封裝于網絡抽象單元的數據稱之為原始字節序列載荷RBSP,它是NAL的基本傳輸單元。其中,RBSP又分為視頻編碼數據和控制數據。其基本結構是:在原始編碼數據的后面填加了結尾比特。一個bit“1”若干比特“0”,以便字節對齊。

3.2 H.264碼流結構圖

通過相關知識的查閱,概括出H.264的碼流結構圖[2]如圖1所示。

4 H.264碼流分析的應用

在有些時候,需要從H.264碼流中直接取得相關信息(如:圖像的寬度和圖像的高度等等信息)。下面介紹下取得相關信息的方法:圖像的相關信息存儲在網絡提取層(NAL)的RBSP結構中,要取得圖像的相關信息,既要獲得圖像的相關位。需依據RBSP結構,獲得pic_width_in_mbs_minus1和pic_height_in_map_units_minus1兩個值,那么寬度為(pic_width_in_mbs_minus1+1)*16,高度為(pic_height_in_map_units_minus1+1)*16,但是有些情況還得考慮nNum_Ref_Frames的值,一般為1。

4.1 獲得試驗數據

設備:SUNNIC (IP Cam)

名字:ST100factory

Firmware版本:p8b8

視頻格式:H.264

圖1 H.264的碼流結構

1) 將設備分辨率設成176*144,使用Ethereal等抓包工具抓得一組數據,并去掉相應的RTP頭后,該數據為0x00,0x00,0x00, 0x01,0x67,0x42,0x00,0x1E,0x99,0xA0,0xB1,0x31。

2) 將設備分辨率設成720*240,使用Ethereal等抓包工具抓得一組數據,并去掉相應的RTP頭后,該數據為0x00,0x00,0x00, 0x01,0x67,0x42,0xE0,0x1E,0xDA,0x82,0xD1,0xF1。

3) 將設備分辨率設成720*480,使用Ethereal等抓包工具抓得一組數據,并去掉相應的RTP頭后,該數據為0x00,0x00,0x00, 0x01,0x67,0x42,0xE0,0x1E,0xDB,0x82,0xD1,0xF1。

4.2 相關程序的書寫

程序的關鍵代碼如下:

void GetH264Resolution(BYTE*pInBuf,intnHeight,intnWidth,intnNum_Ref_Frames)

{

……

UE_V(nIndex,nShiftCount,nShiftBuffer,nNum_Ref_Frames,pFrameHead);

DWORD gaps_in_frame_num_value_allowed_flag=0;MyShift(1,nIndex,nShiftCount,nShiftBuffer,gaps_in_frame_num_value_allowed_flag,pFrameHead);

DWORD pic_width_in_mbs_minus1=0;

UE_V(nIndex,nShiftCount,nShiftBuffer,pic_width_in_mbs_minus1,pFrameHead);

DWORD pic_height_in_map_units_minus1=0;UE_V(nIndex,nShiftCount,nShiftBuffer,pic_height_in_map_units_minus1,pFrameHead);

UE_V(nIndex,nShiftCount,nShiftBuffer,pic_height_in_map_units_minus1,pFrameHead);

nWidth=(pic_width_in_mbs_minus1+1)*16; //圖像的寬度

nHeight=(pic_height_in_map_units_minus1+1)*16;//圖像的高度

}

voidMyShift(intnCount,intnIndex,intnShiftCount,BYTEnShiftBuffer,DWORDnRecv,BYTE*pInBuf)

{//從數據流取得相應位的值。

while (nCount!=0)

{

if(nCount>nShiftCount)

{nRecv=nRecv<

nRecv|=nShiftBuffer>>(8-nShiftCount);

nShiftBuffer=pInBuf[++nIndex];

nCount-=nShiftCount;

nShiftCount=8;

}else

{nRecv=nRecv<

nRecv|=nShiftBuffer>>(8-nCount);

nShiftCount-=nCount;

nShiftBuffer<<=nCount;

nCount=0;

}}

}

4.3 試驗結果與結論

1)將數據流0x00,0x00,0x00,0x01,0x67,0x42,0x00,0x1E,0x99,0xA0,0xB1,0x31放入GetH264Resolution,取得nWidth為176, nHeight為144,nNum_Ref_Frames為1。跟原數據比對,結果正確。

2)將數據流0x00,0x00,0x00,0x01,0x67,0x42,0xE0,0x1E,0xDA,0x82,0xD1,0xF1放入GetH264Resolution,取得nWidth為720, nHeight為240,nNum_Ref_Frames為1。跟原數據比對,結果正確。

3)將數據流0x00,0x00,0x00,0x01,0x67,0x42,0xE0,0x1E,0xDB,0x82,0xD1,0xF1放入GetH264Resolution,取得nWidth為720, nHeight為240,nNum_Ref_Frames為2。跟原數據比對,240正好是480的一半,而這里的nNum_Ref_Frames正好是2。查閱相關資料發現,這里為了讓數據能夠正常顯示,需要將2幀數據進行Interleave操作后,方能正常顯示。

H.264是新一代視頻編碼標準,具有廣泛的應用前景。應用此種方法,在解碼前,取得圖像的高度和寬度,在某些需要知道圖像的寬度和高度的場合,特別是在一些播放H264視頻的應用程序中,會有很大幫助。

參考文獻:

[1] ITU-TRec. H.264/ ISO/IEC 14496-10:2005,H.264 Advanced video coding for generic audiovisual services[S].

[2] 嚴曉飛. H.264碼流結構的分析及其實現的優化[D]. 西安電子科技大學:西安電子科技大學,2007.

[3] RICHARDSONI. H. 2 6 4 andMPEG-4Videocompression [M ].London: JohnW iley Sons, 2003.

主站蜘蛛池模板: 一本一本大道香蕉久在线播放| 国产精品 欧美激情 在线播放| 一级福利视频| 欧美中文一区| 久久一本日韩精品中文字幕屁孩| 国产精品极品美女自在线网站| 国产精品免费电影| 亚洲成人播放| 老司机久久99久久精品播放| 日韩小视频在线播放| 国产亚洲精品无码专| 国产91视频免费观看| 亚洲中字无码AV电影在线观看| 日韩在线播放欧美字幕| 国产一级二级在线观看| 一级黄色片网| 亚洲天堂成人在线观看| 亚洲va在线观看| 精品国产Ⅴ无码大片在线观看81| 亚洲不卡影院| 亚洲综合欧美在线一区在线播放| 国产精品无码一二三视频| 久久夜色精品国产嚕嚕亚洲av| 日韩视频精品在线| 久久五月天综合| 欧美日韩专区| 午夜电影在线观看国产1区| 国产18在线| 激情五月婷婷综合网| 欧美在线中文字幕| 亚洲精品欧美日本中文字幕| 日本一区二区不卡视频| 99精品国产高清一区二区| 欧美日韩导航| 欧美一级在线| 精品国产免费人成在线观看| 国产综合欧美| 99精品免费在线| 91麻豆国产精品91久久久| 亚洲精品无码高潮喷水A| 香蕉eeww99国产在线观看| 一级毛片在线播放免费| 巨熟乳波霸若妻中文观看免费| 久久久久亚洲AV成人网站软件| 亚洲成人一区二区| 精品成人一区二区| 国产精品无码制服丝袜| 亚洲无码免费黄色网址| 在线观看免费人成视频色快速| 麻豆AV网站免费进入| 日本精品视频| 国产9191精品免费观看| 国产毛片一区| 国产自产视频一区二区三区| 91小视频在线| 激情无码视频在线看| 国产青榴视频在线观看网站| 国产丰满大乳无码免费播放| 久久人体视频| 国产精品女熟高潮视频| 久久77777| 99999久久久久久亚洲| 亚洲国产看片基地久久1024| 伊人成人在线视频| 丁香婷婷激情综合激情| 免费中文字幕一级毛片| 欧美日韩久久综合| 91色国产在线| 国产亚洲现在一区二区中文| 亚洲码在线中文在线观看| 在线观看91精品国产剧情免费| 国产精品55夜色66夜色| 美女无遮挡被啪啪到高潮免费| 青草视频在线观看国产| 99热这里只有免费国产精品| 黑人巨大精品欧美一区二区区| 亚洲天堂视频在线免费观看| 久久精品国产亚洲麻豆| 天天干天天色综合网| 成人综合在线观看| аⅴ资源中文在线天堂| 91小视频版在线观看www|