Duration что это: длительность времени, в течение которого что‑то продолжается. В медиофайле duration означает общее время воспроизведения. Video duration показывает, сколько времени видео проигрывается от начала до конца, а audio duration означает то же самое для песни или записи.
Обычно вы видите это число в медиаплеере как общее время. В метаданных та же информация находится в поле с именем Duration.
Какие файлы его содержат
Duration относится к файлам, которые воспроизводятся во времени, то есть к аудио- и видеофайлам. Статичные фотографии и текстовые документы обычно не имеют поля duration.
Анимированные изображения представляют особый случай. Файл GIF хранит задержку для каждого кадра, а не общее время. ExifTool все равно показывает Duration для одного прохода анимации.
Откуда берется значение
Некоторые форматы хранят длительность напрямую. Другие хранят значения, по которым программы вычисляют длительность.
- MP4 и MOV: заголовок фильма хранит временную шкалу и длительность. Временная шкала это количество единиц времени в секунду, а duration считает эти единицы.
- MKV и WebM: информация сегмента может содержать необязательный элемент
Duration, считаемый в тиках. По умолчанию один тик равен одной миллисекунде. - MP3: тег ID3 может содержать кадр
TLENс длительностью в миллисекундах. ExifTool вычисляет длительность по другим значениям, таким как размер файла и битрейт. - FLAC: файл хранит общее количество сэмплов и частоту дискретизации. Программы вычисляют длительность по этим двум значениям, а общее значение
0означает, что число неизвестно. - WAV: ExifTool вычисляет длительность по среднему количеству байт в секунду и размеру файла.
Как выглядят значения
Одна и та же длительность может отображаться по‑разному, в зависимости от программы, читающей файл:
00:05:15: часы, минуты и секунды. Этот файл длится 5 минут 15 секунд.15.23 s: секунды с указанием единицы измерения.200.541000: число без единицы измерения. Программа ffprobe из проекта FFmpeg выводит duration в таком виде, с 6 знаками после запятой. Это число означает 200,541 секунды, примерно 3 минуты 21 секунду.N/A: в формате вывода по умолчанию ffprobe печатает это, когда duration отсутствует. В форматах JSON и XML duration просто опускается.
Число без единицы измерения не всегда означает секунды. Кадр TLEN считает миллисекунды, а значение duration_ts в ffprobe считает единицы базовой временной шкалы потока. Проверьте, из какого поля получено число.
Почему программы могут показывать разную duration: что это
Разные программы могут показывать разную duration для одного и того же файла, и при этом обе могут быть правы. Вот 4 причины:
- Округление: плеер, показывающий только целые секунды, округляет
200.541вверх или вниз. - Отдельные дорожки: у изображения и звука есть отдельные дорожки, и у каждой своя длительность. В файле MOV movie duration соответствует самой длинной дорожке.
- Время начала: у каждого потока может быть собственное время начала. FFmpeg может измерять от самого раннего начала до самого позднего конца, поэтому позднее начало может увеличить общую длительность.
- Оценка: у файла может быть битрейт, но не быть duration. Тогда FFmpeg оценивает duration по битрейту и размеру файла и предупреждает, что результат может быть неточным.
Почему это важно
Duration позволяет проверить файл, не воспроизводя его. Если вы ожидаете клип на 5 минут 15 секунд, а видите 15.23 s, файл может оказаться не тем, который вы ожидали.
Duration также связана с другими значениями. FFmpeg может вычислить общий битрейт по размеру файла и duration.