x264编码器的参数设置。

匿名 (未验证) 提交于 2019-12-03 00:27:02

我对编码也是一知半解,很多参数意义也不太清楚,基本都是实际调整参数后,观看效果。如果描述错误,勿喷。

我也没打算深入研究,只是想用用该编码器。

本人使用x264主要想调整的参数,

第一,profile,也就是使用baseline还是main,还是high编码。

可以通过该接口设置

x264_param_apply_profile();

第二, 编码复杂度

param.i_level_idc=30;

第三,图像质量控制


rc.f_rf_constant是实际质量,越大图像越花,越小越清晰。

param.rc.f_rf_constant_max ,图像质量的最大值。

第四, 码率控制

一开始我使用恒定码流设置,无论我怎么设置,都无法控制实际码流,后来换成平均码流后,就行了。

param.rc.i_rc_method = X264_RC_ABR;//参数i_rc_method表示码率控制,CQP(恒定质量),CRF(恒定码率),ABR(平均码率)

x264使用的bitrate需要/1000。

第五,使用实时视频传输时,需要实时发送sps,pps数据

该参数设置是让每个I帧都附带sps/pps。

第六. I帧间隔

我是将I帧间隔与帧率挂钩的,以控制I帧始终在指定时间内刷新。

以下是2秒刷新一个I帧




第七,编码延迟

在使用中,开始总是会有编码延迟,导致我本地编码立即解码回放后也存在巨大的视频延迟,

后来发现设置x264_param_default_preset(&param, "fast" , "zerolatency" );后就能即时编码了。

主要是zerolatency该参数。

基本的就这样了,完整的设置代码


















看看别人写的对x264结构体的说明

typedef struct x264_param_t
{










/*Vui参数集视频可用性信息视频标准化选项 */













/*这两个参数是由fps帧率确定的,赋值的过程见下:

if( sscanf( value, "%d/%d", &p->i_fps_num, &p->i_fps_den ) == 2 )









Value的值就是fps。*/










/*去块滤波器需要的参数*/
















































































} x264_param_t;

这个是老版本的,新的x264好像新增了一些参数。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!