天天看點

資料壓縮 | 實驗八_H.264編解碼實驗

資料壓縮 | H.264編解碼實驗

    • 一、H.264編碼器輸入參數檔案說明
    • 二、H.264解碼器輸入參數說明
    • 三、H.264編碼實驗要求
    • 四、實驗過程
      • 1.将.264檔案解碼得到.yuv檔案
      • 2. 固定碼率,以不同的GOP長度及形狀編碼
      • 3. 相同的GOP長度及形狀,不同的碼率
    • 五、結果分析
      • 1. 用碼流分析軟體檢查所生成的碼流中各種編碼模式和運動矢量等資訊
      • 2.用播放器觀看所生成碼流的主觀品質
      • 3.生成率失真曲線
    • 五、實驗結論

一、H.264編碼器輸入參數檔案說明

  • encoder.cfg
  • 請參考JM Reference Software Manual (JVT-AE010)
  • 學習如何自主分析和設定編解碼器參數
    資料壓縮 | 實驗八_H.264編解碼實驗

二、H.264解碼器輸入參數說明

  • 将自行選擇或老師給的兩個264檔案進行解碼,得到相應的YUV檔案
  • 将上述兩個視訊序列編碼為.264檔案

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

    GOP=15,2B幀;GOP=12,2B幀,GOP=9,2B幀

    GOP=4,1B幀;GOP=12,無B幀;GOP=1,全I幀

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

    例:1000kb/s, 800kb/s,400kb/s,…

三、H.264編碼實驗要求

  • 用碼流分析軟體檢查所生成的碼流中各種編碼模式和運動矢量等資訊

    分析不同統計特性的視訊圖像對應的編碼模式和運動矢量的特點

    資料壓縮 | 實驗八_H.264編解碼實驗
    資料壓縮 | 實驗八_H.264編解碼實驗
  • 用播放器觀看所生成碼流的主觀品質
  • 生成率失真曲線
    資料壓縮 | 實驗八_H.264編解碼實驗

四、實驗過程

1.将.264檔案解碼得到.yuv檔案

1.1 将兩個.mp4檔案轉換為.264檔案,并将兩個.264檔案放在bin檔案夾下

資料壓縮 | 實驗八_H.264編解碼實驗

1.2 修改decoder.cfg檔案,修改内容如下

InputFile             = "00.264"       # H.264/AVC coded bitstream
OutputFile            = "00.yuv"   # Output file, YUV/RGB
           

1.3 指令行中指令 如下圖所示,并運作

資料壓縮 | 實驗八_H.264編解碼實驗
  • 運作結果如下:
    資料壓縮 | 實驗八_H.264編解碼實驗
    資料壓縮 | 實驗八_H.264編解碼實驗
  • 生成的.yuv檔案
    資料壓縮 | 實驗八_H.264編解碼實驗

2. 固定碼率,以不同的GOP長度及形狀編碼

2.1 以GOP=15,2B幀為例;

  • 修改encoder.cfg檔案,修改内容如下:
# Files
InputFile             = "00.yuv"      
FramesToBeEncoded     = 30      
SourceWidth           = 960    
SourceHeight          = 544   
OutputWidth           = 960    
OutputHeight          = 544  
ReconFile             = "00_rec.yuv"     
OutputFile            = "00_1.264"          

# Encoder Control
IntraPeriod           = 15  

# B Slices
NumberBFrames          = 2  
HierarchicalCoding      =  0 

#Rate control
RateControlEnable       = 0    
Bitrate                 = 45020
RCUpdateMode            = 2    
           
  • 運作結果
    資料壓縮 | 實驗八_H.264編解碼實驗
    資料壓縮 | 實驗八_H.264編解碼實驗
    資料壓縮 | 實驗八_H.264編解碼實驗
    2.2 繼續編碼生成符合以下格式的.264檔案,方法同2.1所示:
  • GOP=12,2B幀
  • GOP=9,2B幀
  • GOP=4,1B幀
  • GOP=12,無B幀
  • GOP=1,全I幀

3. 相同的GOP長度及形狀,不同的碼率

3.1 在2.1的基礎上修改encoder.cfg,改變碼率,修改部分如下:

OutputFile            = "1000kbps.264"           # Bitstream
RateControlEnable       = 1     # 0 Disable, 1 Enable
Bitrate                 = 1000000 # Bitrate(bps)
           

運作結果如下:

資料壓縮 | 實驗八_H.264編解碼實驗

3.2 分别以碼率800kb/s,600kb/s,400kb/s,200kb/s,100kb/s編碼,方法同3.1所述。運作結果如下圖所示:

  • 800kb/s
    資料壓縮 | 實驗八_H.264編解碼實驗
  • 600kb/s
    資料壓縮 | 實驗八_H.264編解碼實驗
  • 400kb/s
    資料壓縮 | 實驗八_H.264編解碼實驗
  • 200kb/s
    資料壓縮 | 實驗八_H.264編解碼實驗
  • 100kb/s
    資料壓縮 | 實驗八_H.264編解碼實驗

五、結果分析

1. 用碼流分析軟體檢查所生成的碼流中各種編碼模式和運動矢量等資訊

  • 以GOP = 15 ,2B幀為例

運動矢量資訊如下圖所示:

  • I幀
    資料壓縮 | 實驗八_H.264編解碼實驗
  • P幀
    資料壓縮 | 實驗八_H.264編解碼實驗
  • B幀
    資料壓縮 | 實驗八_H.264編解碼實驗
  • B幀
    資料壓縮 | 實驗八_H.264編解碼實驗

2.用播放器觀看所生成碼流的主觀品質

碼率 kb/s 圖檔
1000
資料壓縮 | 實驗八_H.264編解碼實驗
800
資料壓縮 | 實驗八_H.264編解碼實驗
600
資料壓縮 | 實驗八_H.264編解碼實驗
400
資料壓縮 | 實驗八_H.264編解碼實驗
200
資料壓縮 | 實驗八_H.264編解碼實驗
100
資料壓縮 | 實驗八_H.264編解碼實驗

3.生成率失真曲線

  • GOP=15,2B幀的率失真曲線
    資料壓縮 | 實驗八_H.264編解碼實驗

五、實驗結論

視訊編碼需要考慮從人眼主觀感受。

繼續閱讀