Частота кадрів - це кількість нерухомих зображень, так званих кадрів, які відео показує щосекунди. Одиниця вимірювання - кадри на секунду, скорочено 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: метадані можуть містити тег частоти кадрів.
Аудіопотік не має такої частоти кадрів. У FFmpeg утиліта ffprobe показує для нього 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 для телебачення надвисокої чіткості.
Постійна та змінна частота кадрів
За сталої частоти кадрів кожен кадр триває однаковий час. За змінної частоти кадрів час між кадрами змінюється протягом відео.
У FFmpeg утиліта ffprobe показує 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 кадрів.