X264编码1 本地编码

本文介绍了开源视频编码库X264,包括其编译过程和编码流程。通过示例代码详细讲解了如何使用X264进行视频编码,涉及的关键函数有x264_param_default、x264_picture_alloc、x264_encoder_open等,以及编码前后的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    X264作为一个开源的视频编码函数库,是最好的有损视频编码,小巧而又简单。所以对X264的学习是非常有必要的。

    在下载X264源代码使用时,需要先对其进行编译,产生相应的.dll,.lib,.h文件,然后拷贝到我们的工程下才行。具体的X264的编译过程:点击打开链接。但是X264的编译过程非常麻烦,很费力气,所以可以下载编译好的.dll,.lib,.h文件直接使用,这样比较省力,下载的链接:点击打开链接 。

    

    在进行X264的编码之前,先看一下编码的整体流程图(流程图来自于雷霄骅的博客,链接在下面):

    

    经过这个流程图我们可以很清晰的清楚编码的过程,简单看下它的各个主要函数:

    x264_param_default():用来设置结构体x264_param_t的缺省值(结构体x264_param_t里有着编码的各项参数);

    x264_picture_alloc():为结构体x264_picture_t分配内存;

    x264_encoder_open():打开编码器;

    x264_picture_t:结构体,用来存储压缩编码前的像素数据;

    x264_encoder_encode():编码一帧图像;

    x264_nal_t:结构体,存储压缩编码后的码流数据;

    flush_encoder:这里使用的函数和编码模块一样,输出编码器中剩余的码流数据;

    x264_encoder_close():关闭编码器;

    x264_picture_clean():释放x264_picture_alloc()申请的资源。


    具体代码分析:

    (1)头文件:

#include "stdint.h"  
#include <stdio.h>    
#include <stdlib.h>  
 
extern "C"
{
#include "x264.h" 
}
 
#define width  640  
#define height 360 
    这里x264.h就是我们编译得到的文件,此外还有x264_config.h,要一起保存在项目工程里。


    (2)变量声明:

int i;
int j;
int frame_num = 100;
int csp = X264_CSP_I420;
int y_size = width*height;
int n_nal;
int ret;
x264_param_t* param = (x264_param_t*)malloc(sizeof(x264_param_t));
x264_picture_t* pic_in = (x264_picture_t*)malloc(sizeof(x264_picture_t));
x264_picture_t* pic_out = (x264_picture_t*)malloc(sizeof(x264_picture_t));
x264_nal_t* nal = (x264_nal_t *)malloc(sizeof(x264_nal_t));
x264_t *encoder;

    上面是函数中需要用到的一些参数定义。

    视频尺寸是640x260,YUV42

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值