FFmpeg 编码器AVCodecContext参数设置
来源:互联网 发布:音轨软件有哪些 编辑:程序博客网 时间:2024/04/18 20:10
- AVCodecContext * pCodecCtxEnc;
- AVCodec *codec;//编码器
- codec = avcodec_find_encoder(AV_CODEC_ID_H264);//h.264编码器查找
- /*AVCodecContext 相当于虚基类,需要用具体的编码器实现来给他赋值*/
- pCodecCtxEnc=avcodec_alloc_context3(codec);
- //编码器的ID号,这里我们自行指定为264编码器,实际上也可以根据video_st里的codecID 参数赋值
- pCodecCtxEnc->codec_id = AV_CODEC_ID_H264;
- //编码器编码的数据类型
- pCodecCtxEnc->codec_type = AVMEDIA_TYPE_VIDEO;
- //目标的码率,即采样的码率;显然,采样码率越大,视频大小越大
- pCodecCtxEnc->bit_rate = 200000;
- //固定允许的码率误差,数值越大,视频越小
- pCodecCtxEnc->bit_rate_tolerance = 4000000;
- //编码目标的视频帧大小,以像素为单位
- pCodecCtxEnc->width = 640;
- pCodecCtxEnc->height = 480;
- //帧率的基本单位,我们用分数来表示,
- //用分数来表示的原因是,有很多视频的帧率是带小数的eg:NTSC 使用的帧率是29.97
- pCodecCtxEnc->time_base.den = 30;
- pCodecCtxEnc->time_base = (AVRational){1,25};
- pCodecCtxEnc->time_base.num = 1;
- //像素的格式,也就是说采用什么样的色彩空间来表明一个像素点
- pCodecCtxEnc->pix_fmt = PIX_FMT_YUV420P;
- //每250帧插入1个I帧,I帧越少,视频越小
- pCodecCtxEnc->gop_size = 250;
- //两个非B帧之间允许出现多少个B帧数
- //设置0表示不使用B帧
- //b 帧越多,图片越小
- pCodecCtxEnc->max_b_frames = 0;
- //运动估计
- pCodecCtxEnc->pre_me = 2;
- //设置最小和最大拉格朗日乘数
- //拉格朗日乘数 是统计学用来检测瞬间平均值的一种方法
- pCodecCtxEnc->lmin = 1;
- pCodecCtxEnc->lmax = 5;
- //最大和最小量化系数
- pCodecCtxEnc->qmin = 10;
- pCodecCtxEnc->qmax = 50;
- //因为我们的量化系数q是在qmin和qmax之间浮动的,
- //qblur表示这种浮动变化的变化程度,取值范围0.0~1.0,取0表示不削减
- pCodecCtxEnc->qblur = 0.0;
- //空间复杂度的masking力度,取值范围 0.0-1.0
- pCodecCtxEnc->spatial_cplx_masking = 0.3;
- //运动场景预判功能的力度,数值越大编码时间越长
- pCodecCtxEnc->me_pre_cmp = 2;
- //采用(qmin/qmax的比值来控制码率,1表示局部采用此方法,)
- pCodecCtxEnc->rc_qsquish = 1;
- //设置 i帧、p帧与B帧之间的量化系数q比例因子,这个值越大,B帧越不清楚
- //B帧量化系数 = 前一个P帧的量化系数q * b_quant_factor + b_quant_offset
- pCodecCtxEnc->b_quant_factor = 1.25;
- //i帧、p帧与B帧的量化系数便宜量,便宜越大,B帧越不清楚
- pCodecCtxEnc->b_quant_offset = 1.25;
- //p和i的量化系数比例因子,越接近1,P帧越清楚
- //p的量化系数 = I帧的量化系数 * i_quant_factor + i_quant_offset
- pCodecCtxEnc->i_quant_factor = 0.8;
- pCodecCtxEnc->i_quant_offset = 0.0;
- //码率控制测率,宏定义,查API
- pCodecCtxEnc->rc_strategy = 2;
- //b帧的生成策略
- pCodecCtxEnc->b_frame_strategy = 0;
- //消除亮度和色度门限
- pCodecCtxEnc->luma_elim_threshold = 0;
- pCodecCtxEnc->chroma_elim_threshold = 0;
- //DCT变换算法的设置,有7种设置,这个算法的设置是根据不同的CPU指令集来优化的取值范围在0-7之间
- pCodecCtxEnc->dct_algo = 0;
- //这两个参数表示对过亮或过暗的场景作masking的力度,0表示不作
- pCodecCtxEnc->lumi_masking = 0.0;
- pCodecCtxEnc->dark_masking = 0.0;
0 0
- FFmpeg 编码器AVCodecContext参数设置
- ffmpeg 编码器AVCodecContext 的配置参数
- ffmpeg 编码器AVCodecContext 的配置参数
- ffmpeg 编码器AVCodecContext 的配置参数
- ffmpeg 编码器AVCodecContext 的配置参数
- ffmpeg 编码器AVCodecContext 的配置参数
- ffmpeg 编码器AVCodecContext 的配置参数
- FFmpeg之AVCodecContext
- FFMPEG-数据结构(AVCodecContext,AVStream,AVFormatContext)
- FFMPEG结构体分析:AVCodecContext
- FFMPEG结构体分析:AVCodecContext
- FFMPEG结构体分析:AVCodecContext
- FFMPEG结构体分析 AVCodecContext
- FFMPEG Intro - AvCodecContext time_base Set
- FFMPEG结构体分析:AVCodecContext
- FFMPEG结构体分析:AVCodecContext
- x264编码器的参数设置。
- x264编码器的参数设置。
- 一些常用的框架
- 数据结构实验之求二叉树后序遍历和层次遍历
- [SinGuLaRiTy-1004] Combinatorial Mathematics-Basic 组合数学
- Swift 常用类库
- warning: templates not found /usr/local/git/share/git-core/templates
- FFmpeg 编码器AVCodecContext参数设置
- ECMAScript 6 笔记(五)
- ffmpeg 编码器AVCodecContext 的配置参数
- 多台笔记本同时上网方法
- MongoDB3.2 安全(一)---authentication
- TFDCustomMemTable.AppendData
- linux执行crontab、脚本命令及chmod
- QT 工程文件
- 给SSD(固态硬盘)编程