Частота кадров - это количество неподвижных изображений, называемых кадрами, которые видео показывает каждую секунду. Единица измерения - кадров в секунду, сокращённо fps. В технических стандартах также используется термин "частота кадров".
В видеофайле частота кадров - это значение метаданных, которое описывает видеопоток. При 25 fps каждый кадр остаётся на экране 1/25 секунды, то есть 40 миллисекунд.
Какие файлы его содержат
Видеоформаты, такие как MP4, MOV, MKV, WebM, AVI, WMV и FLV, могут содержать частоту кадров. Каждый формат хранит это значение по‑своему:
- MP4 и MOV: таблица time-to-sample перечисляет последовательности кадров с одинаковой длительностью. ExifTool вычисляет
VideoFrameRateкак среднее значение по этой таблице. Некоторые файлы MP4 также содержат среднюю и максимальную частоты в тегах, таких какVideoAvgFrameRateиVideoMaxFrameRate. - MKV: поле
DefaultDurationзадаёт время на кадр в наносекундах. ПолеFrameRateносит только информационный характер. - WebM: формат является подмножеством Matroska и тоже может использовать
DefaultDuration. В руководстве по WebM полеFrameRateпомечено как устаревшее. - AVI: частота кадров равна значению скорости в заголовке потока, делённому на его масштаб.
- WMV и FLV: метаданные могут содержать тег частоты кадров.
Аудиопоток не имеет такой частоты кадров. ffprobe из FFmpeg показывает для него 0/0.
Как выглядят значения
В отчёте частота кадров может отображаться как десятичное число, например 29.97, или как дробь, например 25/1. Дробь 25/1 означает 25 кадров за 1 секунду. Дробь остаётся точной, когда значение частоты не целое число.
Обычно встречаются такие значения:
24/1: 24 fps, типичная частота для киноплёнки24000/1001: около 23,976 fps, обозначается FFmpeg какntsc-film25/1: 25 fps, обозначается FFmpeg какpal30000/1001: около 29,97 fps, обозначается FFmpeg какntsc50и60: распространённые частоты для видеозагрузок по данным YouTube120: верхний предел, а не типичное значение. Это максимальная частота в стандарте ITU для телевидения сверхвысокой чёткости.
Постоянная и переменная частота кадров
При постоянной частоте кадров каждый кадр длится одинаковое время. При переменной частоте кадров время между кадрами меняется в ходе видео.
ffprobe из FFmpeg показывает 2 поля: avg_frame_rate - это средняя частота, а r_frame_rate - базовая частота. Базовая частота - это наименьшая частота, которая может точно представить все временные метки; в документации FFmpeg она названа предположением.
Например, если кадры длятся либо 1/25, либо 1/50 секунды, значение r_frame_rate равно 50/1. Среднее при этом ниже, поэтому значения в 2 полях различаются. Временные метки считаются в единицах базового времени.
Откуда берется значение
Записанное видео получает частоту кадров во время съёмки. Позже кодировщик может изменить её, например, удаляя кадры, чтобы уменьшить размер видео.
Для чересстрочного видео может быть показано другое число. Для такого видео фреймворк AVFoundation от Apple сообщает частоту полей, а не частоту кадров.
Почему это важно
Частота кадров главным образом влияет на плавность движения. Более высокая частота делает движение плавнее, но эффект уменьшается по мере роста частоты. При частоте ниже примерно 12 кадров в секунду вы видите последовательность неподвижных изображений, а не движение.
Начиная примерно с 24 fps движение обычно выглядит плавно, а 30 или 60 fps - хороший ориентир. Более высокая частота также увеличивает размер сжатого файла, если кодировщик не снижает частоту. Поэтому 60 fps могут выглядеть плавнее, чем 30 fps, но файл будет больше.
YouTube просит загружать видео с той же частотой кадров, с которой вы его записали. При постоянной частоте произведение частоты на длительность даёт количество кадров. Например, при 25 fps за 4 секунды получается 100 кадров.