Двухпроходное кодирование FFMpeg C / C ++ - PullRequest
0 голосов
/ 20 мая 2018

Из разных дней я безуспешно пытаюсь реализовать двухпроходную кодировку h264 в ffmpeg.Я понимаю, что в первом проходе мне нужно создать текстовый файл со статистикой в ​​stats_out.Этот шаг реализован внутренне из ffmpeg, поэтому мне нужно установить первый проход и получить данные в stats_out, а после этого перейти к этапу 2.

Пока я пытаюсь активировать проход1 по-другому, добавив флаг в codecContext:

CodecCtx->flags |= AV_CODEC_FLAG_PASS1;

и / или установите параметр перед созданием контекста:

av_opt_set(CodecCtx, "pass", "1", 0);

, но в любом случае у меня тот же результат, stats_out всегда (null).

Также в ходе расследования я обнаружил, что FF_API_STATS_BIT кажется устаревшим:

, если FF_API_STAT_BITS

/* statistics, used for 2-pass encoding */
attribute_deprecated
int mv_bits;
attribute_deprecated
int header_bits;
attribute_deprecated
int i_tex_bits;
attribute_deprecated
int p_tex_bits;
attribute_deprecated
int i_count;
attribute_deprecated
int p_count;
attribute_deprecated
int skip_count;
attribute_deprecated
int misc_bits;

/** @deprecated this field is unused */
attribute_deprecated
int frame_bits;

endif

Итак, я немного двусмыслен относительно того, как реализовать этот процесс, и соответствующие посты слишком старые и не очень полезные.

Есть кто-нибудь, кто имел опыт?

...