天天看點

使用libx264将I420編碼為H.264

<a></a>

視訊尺寸是480×360,YUV I420格式,每個像素1.5個位元組,是以一張YUV圖檔大小是width * height * 1.5

encoder就是編碼器,x264_t格式在x264.h檔案中隻有

編碼器類型隻需要也隻能聲明為x264_t的指針類型

每次編碼時,YUV圖檔的資訊都儲存在pic_in中

輸入輸出的檔案描述符

從檔案讀入的YUV的緩沖區

pic_in.img中儲存YUV圖檔各分量的資訊

其中icsp, iplane, istride的值在picin初始化的時候已經被指派,代碼中隻需要将plane數組指向正确的位置

程式中每一幀的圖檔都是讀取到yuv_buffer中,是以在這裡設定一次就行了

關于ffmpeg的pts,網上有好多種公式,其實隻要步長為1遞增就行了

H.264的NAL層是為了适應網絡傳輸的需要,将大的編碼後的幀分成多個塊

p_payload就是編碼後的H.264的幀資料,寫入輸出檔案

gcc sourcefile -lx264 -Wall -o execfile

繼續閱讀