概述
ffmpeg编码h264流参看:
ffmpeg编码示例
x264编码h264流:
x264编码示例
有效影响视频码率的参数有:
一:间接影响
1.关键帧间隔
x264
| |
ffmpeg
|
| 说明 |
命令行 | 字段 | 命令行 | 字段 |
|
max-keyint | i_keyint_max | g | gop_size |
关键帧的最大间隔帧数
|
min-keyint | i_keyint_min |
| keyint_min |
关键帧的最小间隔帧数
|
2分辨率
x264
| |
ffmpeg
|
| 说明 |
命令行 | 字段 | 命令行 | 字段 |
|
resize(滤镜) |
i_width
|
-s
|
width
| 宽 |
|
i_height
| |
width
|
长
|
3帧率
x264
| |
ffmpeg
|
| 说明 |
命令行 | 字段 | 命令行 | 字段 |
|
fps |
i_fps_num
| fps |
time_base.num
| 帧率分子/时间线分子 |
|
i_fps_den
| |
time_base.den
| 帧率分母/时间线分母 |
注: x264:i_fps_num = 15;i_fps_den= 1 ;//帧率15。
ffmpeg:time_base.num=1;time_den=1;//帧率15。
等等视频质量的参数,无可厚非,视频质量提升,要么编码速度降低,要么码率增大。
4.B帧数
x264
| |
ffmpeg
|
| 说明 |
命令行 | 字段 | 命令行 | 字段 |
|
b-adapt
|
b_bframe_adaptiv
| |
b_frame_strategy
| 设定弹性B帧配置决策算法。 此设定控制x264如何决定要放置P帧或B帧。 0:停用,总是挑选B帧。 1:“快速”算法,较快。 2:“最佳”算法,较慢。 |
bframes
|
i_bframe
| |
max_b_frames
| 最大b帧数 |
二 直接控制
x264
| |
ffmpeg
|
| 说明 | ||||||||||||
字段 | 取值 | 字段 | 取值 |
| ||||||||||||
x264_param_t->rc | 264中控制码率的结构体 | | |
| ||||||||||||
i_rc_method |
X264_RC_CQP 0
恒定质量
X264_RC_CRF 1
恒定码率
X264_RC_ABR 2
平均码率
|
| |
| ||||||||||||
i_qp_constant |
恒定qp值,0代表无损压缩.
|
|
取值范围0到51。经常取值在20-40之间,越小质量越好,要求的码率越高。0表示无损压缩 |
固定量化因子。 | ||||||||||||
i_qp_min
i_qp_max |
最小qp取值。默认10
最大。默认51
|
qmin
qmax
|
取值范围0到51。经常取值在20-40之间 |
| ||||||||||||
i_qp_step |
|
max_qdiff |
|
量化步长,即相邻两帧之间量化值之差的最大值
| ||||||||||||
i_bitrate | 码率值 |
bit_rate
| 码率值 |
| ||||||||||||
i_vbv_max_bitrate |
最大瞬时码率,默认0
|
rc_max_rate |
最大瞬时码率 |
| ||||||||||||
f_rf_constant_max |
是实际质量最大值
| |
|
| ||||||||||||
f_rf_constant |
是实际质量,越大图像越花,越小越清晰。 |
|
|
|
未选择时,优先选择的顺序是 bitrate > QP > CRF,会按照该顺序排查参数,直到发现某种类型参数合法时确定类型。
- if ( bitrate ) rc_method = ABR;
- else if ( qp || qp_constant ) rc_method = CQP;
- else rc_method = CRF;
VBR(Variable Bit Rate)即 qp,动态比特率,其码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高,Motion发生时,马赛克很少。码率控制算法根据图像内容确定使用的比特率,图像内容比较简单则分配较少的码率(似乎码字更合适),图像内容复杂则分配较多的码字,这样既保证了质量,又兼顾带宽限制。这种算法优先考虑图像质量。
CBR(Constant Bit Rate)即 bitrate ,是以恒定比特率方式进行编码,有Motion发生时,由于码率恒定,只能通过增大QP来减少码字大小,图像质量变差,当场景静止时,图像质量又变好,因此图像质量不稳定。这种算法优先考虑码率(带宽)。
CVBR(Constrained VariableBit Rate)即CRF,这样翻译成中文就比较难听了,它是VBR的一种改进方法。但是Constrained又体现在什么地方呢?这种算法对应的Maximum bitRate恒定或者Average BitRate恒定。这种方法的兼顾了以上两种方法的优点:在图像内容静止时,节省带宽,有Motion发生时,利用前期节省的带宽来尽可能的提高图像质量,达到同时兼顾带宽和图像质量的目的。同时i_bitrate也需要设置。
x264中
x264_param_t->rc 结构体
/* Encoder analyser parameters */
struct
{
unsigned int intra;
/* intra partitions */
unsigned int inter;
/* inter partitions */
int
b_transform_8x8;
int
i_weighted_pred; /* weighting for P-frames */
int
b_weighted_bipred; /* implicit weighting for B-frames */
int
i_direct_mv_pred; /* spatial vs temporal mv prediction */
int
i_chroma_qp_offset;
int
i_me_method; /* motion estimation algorithm to use (X264_ME_*) */
int
i_me_range; /* integer pixel motion estimation search range (from predicted mv) */
int
i_mv_range; /* maximum length of a mv (in pixels). -1 = auto, based on level */
int
i_mv_range_thread; /* minimum space between threads. -1 = auto, based on number of threads. */
int
i_subpel_refine; /* subpixel motion estimation quality */
int
b_chroma_me; /* chroma ME for subpel and mode decision in P-frames */
int
b_mixed_references; /* allow each mb partition to have its own reference number */
int
i_trellis;
/* trellis RD quantization */
int
b_fast_pskip; /* early SKIP detection on P-frames */
int
b_dct_decimate; /* transform coefficient thresholding on P-frames */
int
i_noise_reduction; /* adaptive pseudo-deadzone */
float
f_psy_rd; /* Psy RD strength */
float
f_psy_trellis; /* Psy trellis strength */
int
b_psy; /* Toggle all psy optimizations */
int
b_mb_info;
/* Use input mb_info data in x264_picture_t */
int
b_mb_info_update; /* Update the values in mb_info according to the results of encoding. */
/* the deadzone size that will be used in luma quantization */
int
i_luma_deadzone[2]; /* {inter, intra} */
int
b_psnr;
/* compute and print PSNR stats */
int
b_ssim;
/* compute and print SSIM stats */
} analyse;
最后
以上就是单身大雁为你收集整理的ffmpeg/x264 码率控制 分析的全部内容,希望文章能够帮你解决ffmpeg/x264 码率控制 分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复