天天看点

使用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

继续阅读