H.264視頻編解碼器——參考軟件JM的下載與編解碼
H.264視頻編解碼器——參考軟件JM的下載與編解碼
一、下載JM工程:
JM是H.264標準制定團隊所認可的官方參考軟件。網址如下
http://iphome.hhi.de/suehring/tml/
從頁面中可找到相應的工程源碼,本次選擇JM 8.6版本,此版本為經典版本:
http://iphome.hhi.de/suehring/tml/download/old_jm/
二、配置編碼環境:
下載後打開工程目錄中tml.sln文件,VS中會有三個工程,其中rtpdump沒用,刪掉。另外兩個ldecod和lencod分別為解碼和編碼工程。
首先將lencod右鍵-設為啟動項目,並將其“屬性->常規->輸出目錄”
$(ProjectDir)bin
,“屬性->調試->工作目錄”也修改為$(ProjectDir)bin
。編譯lencod工程 —— 右鍵lencod -> 僅用於項目 -> 僅重新生成lencod
之後在bin目錄下可找到編譯生成的文件。
在工作目錄bin中,可以找到三個config配置文件,表示三個profile的配置,本次使用最簡單的baseline配置文件進行修改。復制一份,並將文件名改為encoder.cfg
,文件名必須是這個才能作為工程中默認參數,否則還要修改相關配置。
- encoder_main.cfg
- encoder_baseline.cfg
- encoder_extended.cfg
其中配置文件部分內容如下,修改的地方為INputFile(編碼文件)、FramesToBeEncoded(編碼幀數),IntraPeriod(所有幀都設為I針)
########################################################################################## # 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) ### if 1 -> make all the frames are I_frames IDRIntraEnable = 0 # Force IDR Intra (0=disable 1=enable) ### if 1 -> make all I frames to IDR關鍵幀 .... ...
配置好後,運行工程,運行過程中cmd頁面如下所示:
之後去看工作目錄bin中生成的文件:
test.264
為生成的H.264碼流文件,trace_enc.txt
是生成的日誌,由於是關閉的,所以沒有內容,test_rec.yuv
為編碼過程中重建的視頻圖像,可將此文件與原始視頻作比較,即可看出失真所在。
三、配置解碼環境:
首先將ldecod設為啟動項目,編譯ldecod項目(右鍵->僅用於項目->僅重新生成ldecod),同樣修改工程配置文件:
“屬性->常規->輸出目錄”修改為$(ProjectDir)bin
,“屬性->調試->工作目錄”也修改為$(ProjectDir)bin
。
工作目錄中 decoder.cfg
為解碼配置文件,參數如下:
test.264 ........H.264 coded bitstream 需要解碼的碼流文件
test_dec.yuv ........Output file, YUV 4:2:0 format 輸出的文件
test_rec.yuv ........Ref sequence (for SNR) 參考幀
10 ........Decoded Picture Buffer size
0 ........NAL mode (0=Annex B, 1: RTP packets)
0 ........SNR computation offset
1 ........Poc Scale (1 or 2)
500000 ........Rate_Decoder
104000 ........B_decoder
73000 ........F_decoder
leakybucketparam.cfg ........LeakyBucket Params
需要將此配置文件填寫到,ldecod屬性->調試->命令參數中:decoder.cfg。
之後直接運行程序,即可得到解碼的文件,運行過程cmd頁面:
工作目錄中test_dec.yuv
即為解碼後輸出文件,此文件應與源文件相同。
至此,JM工程下載,以及簡單編解碼配置、運行完成。
H.264視頻編解碼器——參考軟件JM的下載與編解碼