У меня проблема при использовании x265 в ffmpeg. Следующий код, который я использую x265 Params, чтобы установить номер опорного кадра P кадра. Я проверил документ x265 и установил параметр - ref для достижения желаемой цели, но он недействителен. Разрешение закодированного заголовка P-кадра для num_negative_pics всегда равно 2. Мне нужно установить это число на 1, то есть любой P-кадр должен ссылаться только на предыдущий кадр.
m_cVideoCodeCtxt->flags |= AV_CODEC_FLAG_CLOSED_GOP;
m_cVideoCodeCtxt->rc_max_rate = m_iRate;
m_cVideoCodeCtxt->rc_min_rate = (int)m_iRate / 2;
m_cVideoCodeCtxt->rc_buffer_size = m_iRate;
m_cVideoCodeCtxt->bit_rate = (int)m_iRate;
m_cVideoCodeCtxt->width = 1920;
m_cVideoCodeCtxt->height = 1080;
m_cVideoCodeCtxt->time_base = { 1, 30 };
m_cVideoCodeCtxt->framerate = { 30 ,1};
m_cVideoCodeCtxt->frame_number = 1;
m_cVideoCodeCtxt->gop_size = 30;
m_cVideoCodeCtxt->max_b_frames = 0;
m_cVideoCodeCtxt->thread_count = 4;
m_cVideoCodeCtxt->pix_fmt = pix_fmt;
m_cVideoCodeCtxt->codec_type = AVMEDIA_TYPE_VIDEO;
m_cVideoCodeCtxt->codec_id = m_fVideoFmCtxt->video_codec_id;
int ret = av_opt_set(m_cVideoCodeCtxt->priv_data, "preset", "ultrafast", 0);
ret = av_opt_set(m_cVideoCodeCtxt->priv_data, "tune", "zerolatency", 0);
CString cstrX265Parms = L"";
cstrX265Parms.Format(L"keyint=%d:ref=1:no-open-gop=1:weightp=1:b_pyramid=1:weightb=0:cutree=0:rc-lookahead=0:bframes=0:scenecut=0:b-adapt=0:repeat-headers=1:max-merge=1", m_iFrameRate);
USES_CONVERSION;
char* cX265Parms = W2A(cstrX265Parms);
ret = av_opt_set(m_cVideoCodeCtxt->priv_data, "x265-params", cX265Parms, 0);
Is есть проблема с моим кодом? Или нужно сотрудничать с другими настройками параметров