音视频开发基础(三)X264编码库

本文介绍了X264编码库的编译安装过程,详细讲解了编码过程中涉及的重要结构体、函数和主要编码属性。通过x264_param_default_preset()函数设置编码器参数,特别是preset和tune选项的用法,如preset的'ultrafast'到'placebo'的不同速度取舍,以及tune选项如'film', 'animation'等针对不同场景的优化。最后,文章讨论了如何对YUV420数据进行X264编码。" 106546214,8638619,Python3.6环境配置全攻略,"['Python', '环境配置', '安装指南']
摘要由CSDN通过智能技术生成
编译安装X264库
git clone http://git.videolan.org/git/x264.git
cd x264
./configure --enable-shared --disable-asm
make
sudo make install

编译完成之后编译的库在/usr/local/lib下面

X264编码需要用到的结构体
typedef struct _X264Encoder
{
   
    x264_param_t *param;
    x264_picture_t *picture; //视频序列中的帧特点
    x264_t *handle;
    x264_nal_t *nal;

} X264Encoder;
X264编码的主要函数
x264_param_default():设置参数集结构体x264_param_t的缺省值。
x264_picture_alloc():为图像结构体x264_picture_t分配内存。
x264_encoder_open():打开编码器。
x264_encoder_encode():编码一帧图像。
x264_encoder_close():关闭编码器。
x264_picture_clean():释放x264_picture_alloc()申请的资源。
X264主要编码属性
param->cpu = x264_cpu_detect();			//CPU自动检测
param->i_threads = X264_THREAD_AUTO;	//并行编码线程
param->b_deterministic = 1;				//可以非确定时线程优化
param->i_sync_lookahead = X264_SYNC_LOOKHEAD_AUTO;  //自动选择线程超前缓冲

//视频属性
param->i_csp = X264_CSP_I420  //输入视频的格式为YUV420;
param->i_width = width;		  //输入视频的宽高
param->i_height = height;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
X264的编码参数很多,我们大多数情况下只需要设置一些参数,其他使用默认的参数就可以了。

开始编码

typedef struct _X264Encoder
{
   
    x264_param_t *param;
    x264_picture_t *picture; //视频序列中的帧特点
    x264_t *handle;
    x264_nal_t *nal;

} X264Encoder;

void h264_Encoder_init(X264Encoder *encoder, int width, int height)
{
   
    //初始化分配空间
    encoder->param = (x264_param_t *)malloc(sizeof(x264_param_t));
    encoder->picture = (x264_picture_t *)malloc(sizeof(x264_picture_t));
    x264_param_default(encoder->param);

    encoder->nal = NULL;
    encoder->handle = NULL;

    //选择编码模型 X264封装了几种现有的编码模型 使用zerolatency编码即刻返回编码后的输出,不用flush
    int rc = x264_param_default_preset(encoder->param, "veryfast", "zerolatency");
    if (rc == -1)
    {
   
        printf("x264_param_default_preset\n");
        retu
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值