ffmpeg编码越来越小_从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(5)

本文深入分析ffmpeg的x264编码器参数设置,探讨如何通过x264_param_default_preset和x264_param_apply_tune减少编码延迟。实验表明,不同预设模式如'ultrafast'、'zerolatency'等对延迟有显著影响,'zerolatency'模式能有效降低延迟,实现接近实时编码的效果。
摘要由CSDN通过智能技术生成

对编码器参数的设置,x264_param_default_preset

这个函数的定义并不在ffmpeg中,因为这是X264提供给外界对编码器做设置API函数,

于是我们在X264项目中查找该函数,它定义在Common.c中,代码如下:

intx264_param_default_preset( x264_param_t *param,constchar*preset,constchar*tune )

{

x264_param_default( param );

if( preset && x264_param_apply_preset( param, preset ) 

return-1;

if( tune && x264_param_apply_tune( param, tune ) 

return-1;

return0;

}

它首先调用下x264_param_default设置默认参数,这在用户没有指定额外设置时,设置就是使用该函数默认参数,

但如果用户指定了preset和(或者)tune参数时,它就会进行额外参数的设置。

首先看一下应用模式的设置:

staticintx264_param_apply_preset( x264_param_t *param,constchar*preset )

{

char*end;

inti = strtol( preset, &end, 10 );

if( *end == 0 && i >= 0 && i 

preset = x264_preset_names[i];

if( !strcasecmp( preset,"ultrafast") )

{

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.b_transform_8x8 = 0;

param->analyse.i_me_method = X264_ME_DIA;

param->analyse.i_subpel_refine = 0;

param->rc.i_aq_mode = 0;

param->analyse.b_mixed_references = 0;

param->analyse.i_trellis = 0;

param->i_bframe_adaptive = X264_B_ADAPT_NONE;

param->rc.b_mb_tree = 0;

param->analyse.i_weighted_pred = X264_WEIGHTP_NONE;

param->analyse.b_weighted_bipred = 0;

param->rc.i_lookahead = 0;

}

elseif( !strcasecmp( preset,"superfast") )

{

param->analyse.inter = X264_ANALYSE_I8x8|X264_ANALYSE_I4x4;

param->analyse.i_me_method = X264_ME_DIA;

param->analyse.i_subpel_refine = 1;

param->i_frame_reference = 1;

param-&g

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值