#ffmpeg #h.264 #libavcodec
Вопрос:
Я хочу изменить динамику gop, чтобы адаптироваться к игроку. Меньшая gop помогает снизить стоимость первого экрана; Большая gop помогает снизить битрейт для экономии пропускной способности.
Я обнаружил, что в nvenc есть функция, которая может решить описанную выше проблему. https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-video-encoder-api-prog-guide/#forcing-current-frame-to-be-encoded-as-intra-frame
Но я использую ffmpeg. Есть ли какая-либо аналогичная функция в ffmpeg?
Ответ №1:
Если AVFrame->pict_type
установлено значение AV_PICTURE_TYPE_I
, то кодеры NVENC по умолчанию будут кодировать его как внутрикадровый. У них также есть частная возможность принудительно использовать его в качестве фрейма IDR.
Для последнего добавьте перед открытием кодировщика.
av_opt_set(avctx->priv_data, "forced_idr", "1", 0);