Как добиться двухпроходного кодирования с использованием x264?

есть ли параметр в структуре x264_param_t
или я должен дважды отправить кадры в x264 dll ..?
Потому что я просто использую функцию encoder_encode, которая возвращает ноль единиц.
Я предполагаю, что это должна быть комбинация параметра и использование encoder_encode дважды.

Вот как я инициализирую params и ссылку на libx264

    InitializeSettings(){
x264_param_default_preset(&m_pXParam, "medium", "zerolatency");
x264_param_apply_profile(&m_pXParam, "baseline");
m_pXParam.i_width = cx;
m_pXParam.i_height = cy;
m_pXParam.i_fps_num = fps;
m_pXParam.i_fps_den = 1;
// rate control
m_pXParam.i_keyint_max = fps - 5;
//m_pXParam.rc.f_rf_constant_max = fps + 5;
// rate control
m_pXParam.rc.i_qp_constant=18;
m_pXParam.rc.i_qp_min=18;
m_pXParam.rc.i_qp_max=18;}

x264_picture_alloc(&m_xPicture, X264_CSP_I420 , m_pXParam.i_width, m_pXParam.i_height);
m_xPicture.img = x264img;
m_iframe_size = x264_encoder_encode(m_xEncoder, &m_xNals, &m_iNal, &m_xPicture, &m_xPictureOut);

@ nobody555 Спасибо! У меня был еще один вопрос о функции x264_param_apply_fastfirstpass:

/* x264_param_apply_fastfirstpass:
*      If first-pass mode is set (rc.b_stat_read == 0, rc.b_stat_write == 1),
*      modify the encoder settings to disable options generally not useful on
*      the first pass. */

о каких вариантах они говорят?

0

Решение

Для кодирования 2pass вам нужно будет дважды пропустить все видео через libx264. Первый проход с param.rc.b_stat_write = 1 и второй проход с param.rc.b_stat_read = 1. Также вы можете указать stats имя файла param.rc.psz_stat_out / param.rc.psz_stat_in, если вы не хотите использовать значение по умолчанию «x264_2pass.log».

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]