Java教程

H.264编码器使用

本文主要是介绍H.264编码器使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

进行H.264编码,C++中比较好用库为libx264,此库封装了H.264编码功能,编码的功能分为几步

1、初始化H.264编码器,指定输入源YUV的格式,m_x264_param中主要配置流尺寸,码率,帧率,等参数,图片输入源设定YUV格式,一般YUV420格式居多,节省存储空间,设置H.264流的尺寸需要和YUV图片尺寸一致。

    注意此参数需要设置为1,m_x264_param.b_repeat_headers = 1;由于每帧都需要带帧头

    m_hx264 = x264_encoder_open(&m_x264_param);
    m_x264_picin = (x264_picture_t*)malloc(sizeof(x264_picture_t));
    int nRet = x264_picture_alloc(m_x264_picin, X264_CSP_I420, m_nwidth, m_nheight);

2、编码输入为YUV帧,输出为H.264帧数据,和是否关键帧数据

     memcpy(m_x264_picin->img.plane[0], indata, inlen);
     outlen = x264_encoder_encode(m_hx264, &m_x264_nal, &m_inal, m_x264_picin, &m_x264_picout);
        m_x264_picin->i_pts++;

判断关键帧  m_x264_picout.b_keyframe  H.264帧数据 m_x264_nal[0].p_payload

3、释放,编码器使用完毕需要释放。

      x264_encoder_close(m_hx264);

C++使用常用参数对x264方法封装DLL

在C#中使用静态导入方法即可实现H.264编码 

 

这篇关于H.264编码器使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!