Термин

Variable frame rate (VFR)

Короткое определение

Видео с переменным интервалом между кадрами (например, скриншот-рекордеры, некоторые телефоны). Многие энкодеры предпочитают CFR для стабильного rate control.

VFR – Variable Frame Rate, переменная частота кадров – означает, что интервал между кадрами непостоянен. Одни кадры отстоят на 1/30 секунды, другие на 1/60, третьи где-то между, в зависимости от того, как источник записал каждый. Противоположность – `cfr`, Constant Frame Rate, где все кадры расставлены ровно одинаково: допущение, которое по умолчанию делает любой стриминговый инструмент и плеер.

VFR появляется в нескольких конкретных местах. Скринкасты с телефона и инструменты захвата экрана вроде OBS, QuickTime, Loom и многие игровые рекордеры выдают VFR, потому что система внизу генерирует новый кадр только когда на экране что-то реально меняется. Некоторые live-энкодер-пайплайны дропают кадры под нагрузкой и выдают VFR-выход как механизм выживания. Отдельные мобильные камеры дают VFR, когда освещение заставляет затвор варьировать.

Сама запись VFR – нормально, она экономит место, не записывая избыточные одинаковые кадры. Проблемы начинаются дальше. Стриминг-пайплайны предполагают CFR для rate control, тайминга сегментов и логики adaptive bitrate; VFR их путает. Плееры могут потерять синхронизацию аудио и видео на длинных видео, потому что их тайминг рассчитан на регулярный интервал кадров. Монтажные инструменты показывают неправильную длительность и дают странные прыжки. Субтитры могут уплывать относительно реплик. Прагматичный ответ для любого стримингового продукта: детектировать VFR на ingest (`ffprobe` в FFmpeg это сообщает) и конвертировать в CFR первым шагом транскода, обычно в 30 или 60 fps в зависимости от типа контента. По качеству это практически ничего не стоит и убирает целую категорию плохо диагностируемых багов.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.