Ответы пользователя по тегу FFmpeg
  • Как понизить латентность h.264 видео в FFMPEG не прибегая к zerolatency?

    XaLBa
    @XaLBa
    Вообще, под задержкой в zerolatency подразумевается разница между тем, когда кадр пришёл на вход энкодеру, и когда он его отдал. Задержка может быть вызвана, что декодер буферизует некоторое количество кадров. Насколько я помню, по умолчанию 40.

    Без буферизации не получится кодировать B-кадры. Также, анализируя кадры из будущего, энкодер более точно распределяет битрейт между кадрами. Количество буферизуемых кадров контролируется параметром rc_lookahead.

    Количество используемых по умолчанию B-кадров — 3, поэтому уменьшать их число или отключать стоит при необходимости в совсем малой задержке.

    Также советую более подробно посмотреть на другие параметры, которые задаются через --tune zerolatency:
    - zerolatency:
        --bframes 0 --force-cfr --no-mbtree
        --sync-lookahead 0 --sliced-threads
        --rc-lookahead 0


    Если же вам нужно уменьшить интервал между I-кадрами, насколько я понял, в ffmpeg это делается опцией -g. Но на задержке это не сказывается. Возможно, даже слегка её увеличивает, поскольку I-кадры сжимаются хуже.
    Ответ написан
    6 комментариев