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;
}