LINUX.ORG.RU

изменение настроек энкодера on-fly

 , ,


0

1

здравствуйте, при кодировании с помощью libx264 хочу на лету менять битрейт... подскажите, кто-нибудь пользовался методом

X264_API int x264_encoder_reconfig( x264_t *, x264_param_t * );
если да, то он корректный вообще?

x264_encoder_try_reconfig

...

/* VBV can't be turned on if it wasn't on to begin with */
    if( h->param.rc.i_vbv_max_bitrate > 0 && h->param.rc.i_vbv_buffer_size > 0 &&
          param->rc.i_vbv_max_bitrate > 0 &&   param->rc.i_vbv_buffer_size > 0 )
    {
        *rc_reconfig |= h->param.rc.i_vbv_max_bitrate != param->rc.i_vbv_max_bitrate;
        *rc_reconfig |= h->param.rc.i_vbv_buffer_size != param->rc.i_vbv_buffer_size;
        *rc_reconfig |= h->param.rc.i_bitrate != param->rc.i_bitrate;
        COPY( rc.i_vbv_max_bitrate );
        COPY( rc.i_vbv_buffer_size );
        COPY( rc.i_bitrate );
    }

...

olelookoe ★★★
()
Ответ на: комментарий от olelookoe

это я видел, vbv включен изначально, естественно...

m_x264_cached_params.rc.i_bitrate = 800;

m_x264_cached_params.rc.i_vbv_max_bitrate = 2000;

m_x264_cached_params.rc.i_vbv_buffer_size = m_x264_cached_params.rc.i_vbv_max_bitrate / 4;

интересует почему элементарный код не меняет битрейт вообще:

//меняем старые параметры
m_x264_cached_params.rc.i_bitrate = new_bitrate;
//пытаемся их применить
x264_encoder_reconfig(m_x264_handle.get(), &m_x264_cached_params);

xperious ★★
() автор топика
Последнее исправление: xperious (всего исправлений: 1)
Ответ на: комментарий от xperious

.i_nal_hrd = X264_NAL_HRD_CBR; ?

X264_NAL_HRD_VBR ?

так не сработает, NAL HRD не допускает возможность изменения битрейта на лету.

Если нужен CBR .rc.b_filler = 1;

olelookoe ★★★
()
Ответ на: комментарий от olelookoe

заменил b_filler = 1, и теперь битрейт меняется, и его можно задавать через патаметр

i_vbv_max_bitrate = new_bitrate

так и подразумевается или тут что-то не так?

xperious ★★
() автор топика
Последнее исправление: xperious (всего исправлений: 3)
Ответ на: комментарий от anonymous

я по исходникам пытался понять, в итоге не получилось

xperious ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.