H264Encoder *pEn = (H264Encoder *) AllocBuffer(sizeof(H264Encoder));
pEn->param = (x264_param_t *) AllocBuffer(sizeof(x264_param_t));
x264_param_default(pEn->param); //set default param
/*設置profile屬性*/
//x264_profile_names數組定義如下:static const char * const x264_profile_names[] =
//{ "baseline", "main", "high", "high10", "high422", "high444", 0 };
x264_param_apply_profile(pEn->param,x264_profile_names[0]);
pEn->param->i_csp = X264_CSP_I420;// 設置幀數據格式爲420
pEn->param->i_width = m_nPicW; // 設置幀寬度
pEn->param->i_height = m_nPicH; // 設置幀高度
pEn->param->rc.i_lookahead = 0;
pEn->param->i_fps_num = m_nFps; // 設置幀率(分子)
pEn->param->i_fps_den = 1; // 設置幀率時間1s(分母)
pEn->param->rc.i_bitrate = m_nBitrate; // 設置碼率
pEn->param->rc.i_vbv_max_bitrate = pCodecParam->encoder.iMaxBitrate; // 設置平均碼率模式下,最大瞬時碼率
pEn->param->i_keyint_max = m_nFps * 2; // 設置GOP最大長度
pEn->param->i_keyint_min = m_nFps * 2; // 設置GOP最小長度
pEn->param->pf_log = x264_log; // 設置打印日誌回調
pEn->param->p_log_private = NULL;
pEn->param->i_log_level = X264_LOG_WARNING;
pEn->param->b_vfr_input = 0; // 1:使用timebase和時間戳做碼率控制 0:只使用fps做碼率控制
pEn->param->i_timebase_num = 1; // timebase(分子)
pEn->param->i_timebase_den = 1000; // timebase(分母)
pEn->param->b_repeat_headers = 0; // 1:在每個關鍵幀前面放sps和pps
pEn->param->i_threads = 1; // 並行編碼多個幀線程數
pEn->param->rc.i_rc_method = X264_RC_ABR; // 碼率控制方法,CQP(恆定質量),CRF(恆定碼率),ABR(平均碼率)
pEn->param->rc.i_vbv_buffer_size = pCodecParam->encoder.iMaxBitrate; //碼率控制緩衝區的大小,單位kbit,默認0
pEn->handle = x264_encoder_open(pEn->param); // 創建一個新的編碼器句柄
x264編碼參數設置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.