日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

H.264实验

發布時間:2024/4/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 H.264实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

H.264實驗

  • 一、H.264簡介
    • 1、什么是H.264
    • 2、H.264優勢
    • 3、H.264特點
  • 二、解碼.264文件,生成YUV文件
  • 三、將YUV重新編碼為H.264文件
    • 1、固定碼率,不同的GOP長度及形狀編碼
      • 1)GOP=15,2B幀
      • 2)GOP=12,2B幀
      • 3)GOP=9,2B幀
      • 4)GOP=4,1B幀
      • 5)GOP=12,無B幀
      • 6)GOP=1,全I幀
    • 2、相同的GOP長度及形狀編碼,不同的碼率
      • 1)40000kb/s
      • 2)20000kb/s
      • 3)10000kb/s
      • 3)5000kb/s
      • 4)4000kb/s
      • 5)1000kb/s
      • 6)600kb/s
      • 7)200kb/s
  • 三、分析碼流的各種編碼模式和運動矢量
  • 四、用播放器查看所生成碼流的質量
    • 1、1000kbps碼率,GOP長度15,GOP形狀2B的視頻
    • 2、200kbps碼率,GOP長度15,GOP形狀2B的視頻
  • 五、生成率失真曲線
  • 六、分析H.264文件
    • 1、SPS和PPS信息
      • 1)sps——序列參數集 (Sequence parameter set)
        • a)profile_idc
        • b)level_idc
        • c)seq_parameter_set_id
        • d)log2_max_frame_num_minus4
        • e)pic_order_cnt_type
        • f)log2_max_pic_order_cnt_lsb_minus4
        • g)num_ref_frames
        • h)gaps_in_frame_num_value_allowed_flag
        • i) pic_width_in_mbs_minus1
        • j)pic_height_in_map_units_minus1
        • k)frame_mbs_only_flag
      • 2)PPS
        • a)pic_parameter_set_id
        • b)seq_parameter_set_id
        • c) entropy_coding_mode_flag
        • d)pic_order_present_flag
        • e)num_slice_groups_minus1
        • f) num_ref_idx_l0_default_active_minus1
        • g)num_ref_idx_l1_default_active_minus1
        • h) weighted_pred_flag
        • i)weighted_bipred_idc
        • j)pic_init_qp_minus26
        • k)pic_init_qs_minus26
        • l)chroma_qp_index_offset
        • m)deblocking_filter_control_present_flag
        • n) constrained_intra_pred_flag
        • o) redundant_pic_cnt_present_flag
        • p) transform_8x8_mode_flag
        • q)pic_scaling_matrix_present_flag
    • 2、以一個GOP為例分析
      • 1)每個圖像幀的類型及所用的編碼比特數、QP值
      • 2)圖像幀號為橫坐標、每幀所用比特數為縱坐標的曲線圖
      • 3)圖像幀號為橫坐標、每幀所用QP為縱坐標的曲線圖
      • 4)第一個I幀
      • 5)第一個P幀
      • 6)B幀

一、H.264簡介

1、什么是H.264

H.264是國際標準化組織(ISO)和國際電信聯盟(ITU)共同提出的繼MPEG4之后的新一代數字視頻壓縮格式。H.264是ITU-T以H.26x系列為名稱命名的視頻編解碼技術標準之一。該標準最早來自于ITU-T的稱之為H.26L的項目的開發。H.26L這個名稱雖然不太常見,但是一直被使用著。H.264是ITU-T以H.26x系列為名稱命名的標準之一,AVC是ISO/IEC MPEG一方的稱呼。
H.264,同時也是MPEG-4第十部分,是由ITU-T視頻編碼專家組(VCEG)和ISO/IEC動態圖像專家組(MPEG)聯合組成的聯合視頻組(JVT,Joint Video Team)提出的高度壓縮數字視頻編解碼器標準。這個標準通常被稱之為H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明確的說明它兩方面的開發者。
H264標準各主要部分有Access Unit delimiter(訪問單元分割符),SEI(附加增強信息),primary coded picture(基本圖像編碼),Redundant Coded Picture(冗余圖像編碼)。還有Instantaneous Decoding Refresh(IDR,即時解碼刷新)、Hypothetical Reference Decoder(HRD,假想參考解碼)、Hypothetical Stream Scheduler(HSS,假想碼流調度器)。

2、H.264優勢

  • 低碼率(Low Bit Rate):和MPEG2和MPEG4 ASP等壓縮技術相比,在同等圖像質量下,采用H.264技術壓縮后的數據量只有MPEG2的1/8,MPEG4的1/3。
  • 高質量的圖像:H.264能提供連續、流暢的高質量圖像(DVD質量)。
  • 容錯能力強:H.264提供了解決在不穩定網絡環境下容易發生的丟包等錯誤的必要工具。
  • 網絡適應性強:H.264提供了網絡抽象層(Network Abstraction Layer),使得H.264的文件能容易地在不同網絡上傳輸(例如互聯網,CDMA,GPRS,WCDMA,CDMA2000等)。

H.264最大的優勢是具有很高的數據壓縮比率,在同等圖像質量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。舉個例子,原始文件的大小如果為88GB,采用MPEG-2壓縮標準壓縮后變成3.5GB,壓縮比為25∶1,而采用H.264壓縮標準壓縮后變為879MB,從88GB到879MB,H.264的壓縮比達到驚人的102∶1。低碼率(Low Bit Rate)對H.264的高的壓縮比起到了重要的作用,和MPEG-2和MPEG-4 ASP等壓縮技術相比,H.264壓縮技術將大大節省用戶的下載時間和數據流量收費。尤其值得一提的是,H.264在具有高壓縮比的同時還擁有高質量流暢的圖像,正因為如此,經過H.264壓縮的視頻數據,在網絡傳輸過程中所需要的帶寬更少,也更加經濟。

3、H.264特點

H264標準的主要特點如下:

  • 更高的編碼效率:同H.263等標準的特率效率相比,能夠平均節省大于50%的碼率。
  • 高質量的視頻畫面:H.264能夠在低碼率情況下提供高質量的視頻圖像,在較低帶寬上提供高質量的圖像傳輸是H.264的應用亮點。
  • 提高網絡適應能力:H.264可以工作在實時通信應用(如視頻會議)低延時模式下,也可以工作在沒有延時的視頻存儲或視頻流服務器中。
  • 采用混合編碼結構:同H.263相同,H.264也使用采用DCT變換編碼加DPCM的差分編碼的混合編碼結構,還增加了如多模式運動估計、幀內預測、多幀預測、基于內容的變長編碼、4x4二維整數變換等新的編碼方式,提高了編碼效率。
  • H.264的編碼選項較少:在H.263中編碼時往往需要設置相當多選項,增加了編碼的難度,而H.264做到了力求簡潔的“回歸基本”,降低了編碼時復雜度。
  • H.264可以應用在不同場合:H.264可以根據不同的環境使用不同的傳輸和播放速率,并且提供了豐富的錯誤處理工具,可以很好的控制或消除丟包和誤碼。
  • 錯誤恢復功能:H.264提供了解決網絡傳輸包丟失的問題的工具,適用于在高誤碼率傳輸的無線網絡中傳輸視頻數據。
  • 較高的復雜度:264性能的改進是以增加復雜性為代價而獲得的。據估計,H.264編碼的計算復雜度大約相當于H.263的3倍,解碼復雜度大約相當于H.263的2倍。

二、解碼.264文件,生成YUV文件

這里我們選用老師所給的兩個264文件進行試驗。
首先需要將兩個264文件進行解碼,得到相應的YUV文件。
在這里只需要修改配置文件如下即可得到YUV文件。


三、將YUV重新編碼為H.264文件

1、固定碼率,不同的GOP長度及形狀編碼

設定碼率都為45000kb/s,為了方便觀看,成功截圖只以第一個為例

1)GOP=15,2B幀

更改GOP長度

IntraPeriod = 15 # Period of I-pictures (0=only first)

更改B幀數量

NumberBFrames = 2 # Number of B coded frames inserted (0=not used) RCUpdateMode = 3 # Rate Control type. Modes supported :# 0 = original JM rate control,# 1 = rate control that is applied to all frames regardless of the slice type,# 2 = original plus intelligent QP selection for I and B slices (including Hierarchical),# 3 = original + hybrid quadratic rate control for I and B slice using bit rate statistics

2)GOP=12,2B幀

更改GOP長度

IntraPeriod = 12 # Period of I-pictures (0=only first)

更改B幀數量

NumberBFrames = 2 # Number of B coded frames inserted (0=not used)

3)GOP=9,2B幀

更改GOP長度

IntraPeriod = 9 # Period of I-pictures (0=only first)

更改B幀數量

NumberBFrames = 2 # Number of B coded frames inserted (0=not used)

4)GOP=4,1B幀

更改GOP長度

IntraPeriod = 4 # Period of I-pictures (0=only first)

更改B幀數量

NumberBFrames = 1 # Number of B coded frames inserted (0=not used)

5)GOP=12,無B幀

更改GOP長度

IntraPeriod = 12 # Period of I-pictures (0=only first)

更改B幀數量

NumberBFrames = 0 # Number of B coded frames inserted (0=not used)

6)GOP=1,全I幀

更改GOP長度

IntraPeriod = 1 # Period of I-pictures (0=only first)

更改B幀數量

NumberBFrames = 0 # Number of B coded frames inserted (0=not used)

2、相同的GOP長度及形狀編碼,不同的碼率

這里固定GOP長度為15幀,2B幀

1)40000kb/s

只需更改下面兩個參數即可,為了方便觀看,成功截圖只以第一個為例,剩下的給出PSNR值

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 40000 # Bitrate(bps)

2)20000kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 20000 # Bitrate(bps)

3)10000kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 10000 # Bitrate(bps)

3)5000kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 5000 # Bitrate(bps)

4)4000kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 1000 # Bitrate(bps)

5)1000kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 800 # Bitrate(bps)

6)600kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 600 # Bitrate(bps)

7)200kb/s

RateControlEnable = 1 # 0 Disable, 1 Enable Bitrate = 400 # Bitrate(bps)

三、分析碼流的各種編碼模式和運動矢量

以1000kbps碼率,GOP長度15,GOP形狀2B為例:

由圖中可看出,顯示順序為IBBPBBPBBPBBP,但由于進行了幀重排,編解碼順序為與顯示順序不同。
此處以第一組IPBB(編解碼)為例:

四、用播放器查看所生成碼流的質量

1、1000kbps碼率,GOP長度15,GOP形狀2B的視頻

2、200kbps碼率,GOP長度15,GOP形狀2B的視頻

可以看到,相比于1000kps碼率的,該圖像變得有些模糊。

五、生成率失真曲線

由生成的碼流數據可以得到以下表格

并由上表可以畫出下圖

六、分析H.264文件

1、SPS和PPS信息

用H264Visa.exe進行分析

1)sps——序列參數集 (Sequence parameter set)

當前文件profile_idc = 100,查表可知碼流檔次為High-profile。

a)profile_idc

當前文件level_idc=31,即碼流級別為3.1

b)level_idc


c)seq_parameter_set_id

當前文件seq_parameter_set_id=0

d)log2_max_frame_num_minus4

當前文件log2_max_frame_num_minus4 = 2,
計算MaxFrameNum = 2^(log2_max_frame_num_minus4 + 4)= 64

e)pic_order_cnt_type

當前序列pic_order_cnt_type=0,采用POC mode 0。

f)log2_max_pic_order_cnt_lsb_minus4

當前文件log2_max_pic_order_cnt_lsb_minus4 = 3,
計算 MaxPicOrderCntLsb
= 2^(log2_max_pic_order_cnt_lsb_minus4+4)=128。

g)num_ref_frames

當前文件max_num_ref_frames=16,所以參考幀最大數目為16。

h)gaps_in_frame_num_value_allowed_flag

當前文件gap_in_frame_num_value_allowed_flag=0。


i) pic_width_in_mbs_minus1

因此圖像的實際寬度為16 ×(pic_width_in_mbs_minus1+1) = 16×(39+1)= 640

j)pic_height_in_map_units_minus1

因此圖像的實際高度為16 ×(pic_height_in_map_units_minus1+1) = 16×(22+1)= 368

比對視頻信息,發現與結果一致:

k)frame_mbs_only_flag

在本文件中,frame_mbs_only_flag=1。

2)PPS

a)pic_parameter_set_id

當前文件pic_parameter_set_id=0。

b)seq_parameter_set_id

當前文件seq_parameter_set_id=0。

c) entropy_coding_mode_flag

當前文件中,entropy_coding_mode_flag=1,采用CABAC方法。

d)pic_order_present_flag

當前文件中,pic_order_present_flag=0,即條帶頭中不會出現與圖像順序有關的語法元素。

e)num_slice_groups_minus1

當前文件中,num_slice_groups_minus1=0。

f) num_ref_idx_l0_default_active_minus1

當前文件中,num_ref_idx_l0_default_active_minus1=15

g)num_ref_idx_l1_default_active_minus1

當前文件中,num_ref_idx_l0_default_active_minus1=0

h) weighted_pred_flag

當前文件中,weighted_pred_flag=1。

i)weighted_bipred_idc

當前文件中,weighted_bipred_idc=2。

j)pic_init_qp_minus26

當前文件中,pic_init_qp_minus26=0

k)pic_init_qs_minus26

當前文件中,pic_init_qs_minus26=0

l)chroma_qp_index_offset

當前文件中,chroma_qp_index_offset=-2。

m)deblocking_filter_control_present_flag

當前文件中,deblocking_filter_control_present_flag=1。

n) constrained_intra_pred_flag

當前文件中,constrained_intra_pred_flag =0。

o) redundant_pic_cnt_present_flag

當前文件中,redundant_pic_cnt_present_flag=0。

p) transform_8x8_mode_flag

當前文件中,transform_8x8_mode_flag =1。

q)pic_scaling_matrix_present_flag

當前文件中,pic_scaling_matrix_present_flag=0。

2、以一個GOP為例分析

1)每個圖像幀的類型及所用的編碼比特數、QP值


由上圖可知此文件為IPPPPP格式,只有I幀與P幀,第一個為I幀剩下全為P幀

由上圖可知I幀的編碼比特數為269928bits、QP值為26

第一個P幀比特數為5024bits、QP值為26,剩下的幀也可以這樣查看,在這里不再展示。

2)圖像幀號為橫坐標、每幀所用比特數為縱坐標的曲線圖

統計每個幀所用的bit數,可以得到下表

并由上表可以畫出下圖

3)圖像幀號為橫坐標、每幀所用QP為縱坐標的曲線圖

統計每個幀所用的QP值,可以得到下表

并由上表可以畫出下圖

4)第一個I幀


其中I幀,完全使用幀內編碼,編碼類型全部為16*16,并且其中分配bit數可看下圖,塊中格數少的分配bit數少,塊中小格多的分配bit數多

5)第一個P幀


可以看到運動矢量如下:綠色的點為運動矢量因為該例子幾乎沒有運動所以為點

如下圖所示,使用了幀內編碼和幀間編碼,綠色的格子為skip有1554個,紅色的格子為幀內編碼有57個,其中有44與1616格式,看紅色格子中小格子數量。

6)B幀

因為所提供的視頻沒有B幀,因此這里采用別的視頻對B幀講解

該幀完全使用幀間編碼。黃色為B_skip宏塊,占737/920=80.11%。

其余部分上課也與老師較完全的討論過,這里不在做截圖展示。

總結

以上是生活随笔為你收集整理的H.264实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。