1、问题描述:
在使用ffmpeg执行音视频编码的时候,发现手机的cpu占用高达70%左右,导致整个程序卡顿
经过分析发现avcodec_encode_video2()
接口在进行h264编码时,消耗资源过多。
2、解决方案:
在h264编码器初始化时,指定编码器参数ultrafast
和zerolatency
// 设置编码器参数
AVDictionary *param = 0;
av_dict_set(¶m, "preset", "ultrafast", 0);
av_dict_set(¶m, "tune", "zerolatency", 0);
// 根据编码器AVCodecContext 和 编码器初始化
ret = avcodec_open2(pOutAudioCodecCtx, encoder, ¶m);
if (ret < 0) {
LOGD("open_output_file Cannot open video encoder for stream #%u ret = %d, %s", i,
ret, av_err2str(ret));
return ret;
}