|
|
@@ -39,8 +39,8 @@ int encoder_video_x264::init(
|
|
|
av_dict_set(&options, "preset", "ultrafast", 0);
|
|
|
av_dict_set(&options, "tune", "zerolatency", 0);
|
|
|
|
|
|
- // 针对画质问题的特殊优化:提高码率而不是降低速度
|
|
|
- av_dict_set(&options, "x264-params", "keyint=15:min-keyint=15:no-scenecut=1:rc-lookahead=0:aq-mode=2:aq-strength=0.8", 0);
|
|
|
+ // 针对花屏问题的特殊优化:更精细的x264参数控制
|
|
|
+ av_dict_set(&options, "x264-params", "keyint=15:min-keyint=15:no-scenecut=1:rc-lookahead=0:aq-mode=3:aq-strength=1.0:deblock=1,1:psy-rd=0.4,0.0:me=umh:subme=4:ref=1", 0);
|
|
|
av_dict_set(&options, "profile", "high", 0);
|
|
|
av_dict_set(&options, "level", "4.1", 0);
|
|
|
// 使用更高的码率而不是更低的CRF来改善画质
|
|
|
@@ -67,17 +67,17 @@ int encoder_video_x264::init(
|
|
|
_encoder_ctx->time_base.num = 1;
|
|
|
_encoder_ctx->time_base.den = frame_rate;
|
|
|
_encoder_ctx->framerate = {frame_rate, 1};
|
|
|
- _encoder_ctx->bit_rate = bit_rate * 2; // 提高码率来改善画质,而不是降低编码速度
|
|
|
+ _encoder_ctx->bit_rate = bit_rate * 1.5; // 适度提高码率,避免过度消耗带宽
|
|
|
|
|
|
// 回到低延迟GOP设置
|
|
|
_encoder_ctx->gop_size = 15;
|
|
|
|
|
|
- // 使用更宽松的量化参数,通过码率控制画质
|
|
|
- _encoder_ctx->qmin = 12;
|
|
|
- _encoder_ctx->qmax = 28;
|
|
|
+ // 针对花屏优化的量化参数
|
|
|
+ _encoder_ctx->qmin = 10; // 稍微提高最小质量
|
|
|
+ _encoder_ctx->qmax = 24; // 控制最大量化,避免过度压缩
|
|
|
|
|
|
- // 设置CRF值 - 稍微放宽以保证速度
|
|
|
- _encoder_ctx->global_quality = 20 * FF_QP2LAMBDA;
|
|
|
+ // 设置CRF值 - 针对花屏问题优化
|
|
|
+ _encoder_ctx->global_quality = 18 * FF_QP2LAMBDA; // 降低到18提升画质
|
|
|
|
|
|
_encoder_ctx->max_b_frames = 0; //NO B Frame
|
|
|
|