【H.264/AVC視頻編解碼技術詳解】四. 常見H.264視頻編解碼器(X264和JM)及參考軟件JM的下載與編解碼

《H.264/AVC視頻編解碼技術詳解》視頻教程已經在“CSDN學院”上線,視頻中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看!

“紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文檔以代碼的形式操作一遍,才能對視頻壓縮編碼標準的思想和方法有足夠深刻的理解和體會!

鏈接地址:H.264/AVC視頻編解碼技術詳解

本節視頻免費


常見H.264視頻編解碼器(X264和JM)及參考軟件JM的下載與編解碼

我們已經知道,H.264是一種視頻壓縮標準,其只規定了符合標準的碼流的格式,以及碼流中各個語法元素的解析方法。H.264標準並未規定編碼器的實現或流程,這給了不同的廠商或組織在編碼實現方面極大的自由度,併產生了一些比較著名的開源H.264編解碼器工程。其中H.264編碼器中最著名的兩個當屬JM和X264,這二者都屬於H.264編碼標準的一種實現形式。

  • JM:JM通常被認爲是H.264標準制定團隊所認可的官方參考軟件,基本實現了H.264標準的全部特徵。JM在運行時的運算過程較爲複雜,而且沒有采用匯編優化等加速方法,因此運行速度較慢,很難達到實時編解碼。通常主要用於編解碼技術的科學研究領域,目前(2016.7)最新版本爲JM 19。
  • X264:X264是另一個著名的H.264開源視頻編碼器,由開源組織VideoLan開發制定。X264是目前企業界應用最爲廣泛的開源編碼器,主要因爲X264相對於JM進行了大量的優化與簡化,使其運行效率大幅提高,主要有對編碼代價計算方法的簡化以及添加了MMX、SSE彙編優化等部分。雖然編碼的質量在某些情況下相對於JM略有下降,但是已無法掩蓋其在可應用性,尤其是實時編碼方面無可比擬的優勢。

這裏我們首先從JM開始入手來研究H.264標準的原理。JM的源代碼的下載地址爲:http://iphome.hhi.de/suehring/tml/download/。如下圖所示:
在這裏插入圖片描述

在目錄中,可以選擇最新版的jm19.0,也可從old_jm中選擇歷史版本,如選擇jm8.6版本。下載後解壓,可見其中包含lencod、ldecod等工程:
在這裏插入圖片描述

在工程目錄的bin文件夾中包含了多個後綴名爲.cfg的配置文件:

  • encoder_baseline.cfg:用於實現H.264基準檔次的編碼的配置文件;
  • encoder_main.cfg:用於實現H.264主要檔次的編碼的配置文件;
  • encoder_extended.cfg:用於實現H.264擴展檔次的編碼的配置文件;

將encoder_baseline.cfg複製一份並重命名爲encoder.cfg,如此編碼器便自動將該配置文件作爲編碼器的默認配置。修改配置文件爲:

##########################################################################################
# Files
##########################################################################################
InputFile             = "akiyo_qcif.yuv"       # Input sequence, YUV 4:2:0
InputHeaderLength     = 0      # If the inputfile has a header, state it's length in byte here 
StartFrame            = 0      # Start frame for encoding. (0-N)
FramesToBeEncoded     = 10      # Number of frames to be coded
FrameRate             = 30	   # Frame Rate per second (1-100)
SourceWidth           = 176    # Image width in Pels, must be multiple of 16
SourceHeight          = 144    # Image height in Pels, must be multiple of 16
TraceFile             = "trace_enc.txt"
ReconFile             = "test_rec.yuv"
OutputFile            = "test.264"


##########################################################################################
# Encoder Control
##########################################################################################
ProfileIDC            = 66  # Profile IDC (66=baseline, 77=main, 88=extended)
LevelIDC              = 30  # Level IDC   (e.g. 20 = level 2.0)

IntraPeriod           =  1  # Period of I-Frames (0=only first)
IDRIntraEnable	      =  0  # Force IDR Intra  (0=disable 1=enable)
......

將待編碼的YUV序列與encoder.cfg文件置於lencod.exe生成的目錄下,執行編碼程序,即可生成符合H.264標準的碼流:
在這裏插入圖片描述

發佈了185 篇原創文章 · 獲贊 125 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章