视频x264编码浅析

声明 x264_param_t 结构体变量:

x264_param_t params;

x264_param_default_preset(&params, "ultrafast", "zerolatency");//优化编码延迟?

变量参数编码前赋值:

  params.i_csp                = (csp == 17) ? X264_CSP_NV12 : csp;//编码比特流的CSP,仅支持i420,色彩空间设置
#ifdef    SQUARE_AND_ROTATE
    params.i_width            = w;
    params.i_height            = h;
#else
    params.i_width            = width;
    params.i_height            = height;
#endif
    params.vui.i_sar_width        = 1;
    params.vui.i_sar_height    = 1;    //设置长宽比 

    params.i_fps_num            = fpsnum;//帧率分子
    params.i_fps_den            = fpsden;//帧率分母 

    params.i_timebase_num    = 1;
    params.i_timebase_den    = 1000;//ms

    params.i_keyint_max        = fpsnum/fpsden;
    params.i_keyint_min        = fpsnum/fpsden;//X264_KEYINT_MIN_AUTO

    params.b_repeat_headers    = 0;//
    params.b_annexb            = 0;

    params.b_deblocking_filter    = 1;
    params.rc.f_rf_constant     = 33;
    params.rc.i_bitrate            = bitrate;

初始化编码器:

enc = x264_encoder_open(&params);

获取整个流的pps和SPS??:

int s = x264_encoder_headers(enc, &nals, &nal_count);

-----------------------------------------------------------------

x264编码:

初始化图片信息:

x264_picture_t picin, picout;
x264_picture_init(&picin);

对图片信息参数设定:

picin.i_pts            = ts;
picin.i_type            = X264_TYPE_AUTO;
picin.i_qpplus1        = 0;
picin.img.i_csp        = (csp == 17) ? X264_CSP_NV12 : csp;//special hack for android。。。。。。。。。。。。。。。。。。。

对帧进行x264编码:

ret = x264_encoder_encode(enc, &nals, &nnal, &picin, &picout);

备注:总结一下就是:

(1)初始化并设定x264_param_t

(2)初始化并设定 x264_picture_t

(3)x264编码

=====================================================

参考:

X264多线程分析

http://blog.sina.com.cn/s/blog_4ae178ba01013yix.html

x264的编码示例
http://blog.csdn.net/xyyangkun/article/details/7255372/

x264编码详细文字全过程

http://www.cnblogs.com/chuncn/archive/2011/02/25/1459805.html

时间: 2024-10-17 09:52:53

视频x264编码浅析的相关文章

iOS音频AAC视频H264编码 推流最佳方案

项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵. 1    功能概况 *  实现音视频的数据的采集 *  实现音视频数据的编码,视频编码成h264,音频编码成aac *  实现音视频数据的发布,将编码好的音视频数据传输到服务器 2 视频和音频编码方案 视频硬编码需要使用AVAssetWriter,但是他只支持直接将数据编码成h264并写入文件,不提供接口中途获取视频数据处理,我们需要在保存的文件中读出数据 据顶采用软编码,主流开源编解码器Xvid,x264,ffmpeg,Xvid是

X264编码流程详解(转)

http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如何构建起来一直感觉很神秘,于是决定在理解理论的基础上潜心于编码器实现框架.关于开源的H264编码器有很多,JMVC,T264.X264,这里选择X264,因为网上关于X264源码分析资源很多.X264编码器是一个开源的经过优化的高性能H.264编码器,目前最新的源码在本人的I5处理器的PC机上,编码

WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码

总述 在前一篇文章中,讲解了如何将OPENH264编解码器集成到WebRTC中,但是OPENH264只能编码baseline的H264视频,而且就编码质量而言,还是X264最好,本文就来讲解一下如何将X264编码器集成到WebRTC中,为了实现解码,同时要用到ffmpeg.总体流程和之前一样,分为重新封装编解码器和注册调用两大步骤,注册调用这一步没有任何不同,主要是重新封装这一步骤有较大区别. 重新封装X264编码功能 首先当然还是要下载X264源码编译出相应的库以供调用.在windows下使用

x264编码延时研究

研究了一下x264编码延时. 方法是加log在x264.c static int encode( x264_param_t *param, cli_opt_t *opt ) { ... i_frame_size = encode_frame( h, opt->hout, &pic, &last_dts ); if( i_frame_size == 0)   // delay frames fprintf( stderr, "output zero %d\n", i

视频格式编码详解

当我们看到一个视频文件的时候,可以经常看到视频文件后面跟着***.avi,***.mp4等等许多种类,这些类型到底是什么呢,其实他们就是视频的封装格式. 封装格式知多少: 说到封装格式,我们先要了解一下什么是所谓的封装格式.封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中.也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以.笔者查到这些后可以给大家打个比方:封装格式就像是个包装盒,而编码压缩好的视频音频文件就像是盒子里面的东西,你要是拿去送礼,不可

FFmpeg YUV视频序列编码为视频

上一篇已经写了如何配置好开发环境,这次就先小试牛刀,来个视频的编码.搞视频处理的朋友肯定比较熟悉YUV视频序列,很多测试库提供的视频数据都是YUV视频序列,我们这里就用用YUV视频序列来做视频.关于YUV视频序列,我就不多讲了,可以看书学习,通常的视频序列都是YUV420格式的. 步骤也就那几步,添加视频流,打开编码器,开辟相应的内存空间,然后就可以打开YUV序列逐帧写入数据了,so easy!记得最后要做好文件的关闭和内存的释放,因为FFmpeg是c风格的(不知道新版本是否是c++风格的),这

x264 编码数配置

记录项目中用到一组x264快速编码参数配置,具体如下: param->i_frame_reference = 1; param->i_scenecut_threshold = 0; param->b_deblocking_filter = 0; param->b_cabac = 0; param->i_bframe = 0; param->analyse.intra = 0; param->analyse.inter = 0; param->analyse.

视频直播编码,如何驾驭超复杂业务逻辑而不失漂亮的代码

折腾了一下午再加上晚上1小时,终于完成了总共6个视频,时长3小时48分的视频录制.这6个视频,完整演示了我们团队基于我们自己搭建的框架,进行编码的工作流程,即如何从原型图开始,一步一步分析需求,设计数据库,完成页面HTML,JS,CSS以至全部功能,现场直播,全程无删减. 我们的这个框架,就是为超复杂业务逻辑而生,同时不失漂亮的代码.通过这6个视频,你可以看到我们如何将复杂的业务逻辑,拆分成一个一个短小的业务单元,让每一个业务单元都那么简单.整个过程就像是庖丁解牛,每一行代码都那么理所当然,每一

(转)x264 编码流程

转自:http://alphamailpost.blog.163.com/blog/static/20111808120128111160728/ http://www.usr.cc/thread-52674-1-1.html Main函数中包含三个函数:Init,Encode,Fini,分别用来初始化,编码和编码后内存处理. Init: I(1)X264_param_default: 参数初始化,包括:CPU,视频参数,编码参数,码率控制参数,日志,分析参数和量化参数等.需要注意的是: par