Словник

Що таке тривалість?

Тривалість - це загальний час відтворення аудіо- або відеофайлу. Ось як файли зберігають це значення і чому 2 програми можуть показувати різні числа.

duration

Тривалість це проміжок часу, протягом якого щось триває. У медіафайлі тривалість означає загальний час відтворення. Тривалість відео показує, як довго відео програється від початку до кінця, а тривалість аудіо означає те саме для пісні чи запису.

Зазвичай ви бачите це число у своєму медіапрогравачі як загальний час. У метаданих ця ж інформація міститься в полі з назвою Duration.

Які файли містять його

Тривалість стосується файлів, які відтворюються у часі, тобто аудіо- та відеофайлів. Зображення та текстові документи зазвичай не мають поля тривалості.

Анімовані зображення є особливим випадком. Файл GIF зберігає затримку для кожного кадру, але не загальний час. ExifTool все одно показує Duration для одного циклу анімації.

Звідки походить значення

Деякі формати зберігають тривалість безпосередньо. Інші формати зберігають значення, які програми використовують для обчислення тривалості.

  • MP4 і MOV: заголовок відео зберігає часову шкалу та тривалість. Часова шкала це кількість часових одиниць на секунду, а тривалість рахує ці одиниці.
  • MKV і WebM: у відомостях про сегмент може бути необов'язковий елемент Duration, що рахується у тиках. Типово один тик дорівнює одній мілісекунді.
  • MP3: тег ID3 може містити фрейм TLEN з тривалістю в мілісекундах. ExifTool обчислює тривалість з інших значень, наприклад розміру файлу та бітрейту.
  • FLAC: файл зберігає загальну кількість семплів і частоту дискретизації. Програми обчислюють тривалість з цих двох значень, а загальне значення 0 означає, що кількість невідома.
  • WAV: ExifTool обчислює тривалість з середньої кількості байтів за секунду та розміру файлу.

Як виглядають значення

Одна й та сама тривалість може відображатися по-різному залежно від програми, яка читає файл:

  • 00:05:15: години, хвилини та секунди. Цей файл триває 5 хвилин і 15 секунд.
  • 15.23 s: секунди з показаною одиницею вимірювання.
  • 200.541000: число без одиниці вимірювання. Програма ffprobe з проєкту FFmpeg виводить тривалість у такому вигляді, з 6 цифрами після коми. Це число означає 200,541 секунди, приблизно 3 хвилини і 21 секунду.
  • N/A: у форматі виводу за замовчуванням ffprobe показує це, коли тривалість відсутня. У форматах виводу JSON та XML тривалість просто не виводиться.

Число без одиниці вимірювання не завжди означає секунди. Фрейм TLEN рахує мілісекунди, а значення duration_ts у ffprobe рахує одиниці часової бази потоку. Перевірте, з якого поля ви отримали це число.

Чому програми можуть показувати різну тривалість

Різні програми можуть показувати різну тривалість для одного й того самого файлу, і при цьому жодна з них не обов'язково помиляється. Ось 4 причини:

  • Округлення: програвач, який показує лише цілі секунди, округлює 200.541 вгору або вниз.
  • Окремі доріжки: зображення та звук мають окремі доріжки, і кожна доріжка має власну тривалість. У файлі MOV тривалість відео відповідає найдовшій доріжці.
  • Час початку: кожен потік може мати власний час початку. FFmpeg може вимірювати від найранішого початку до найпізнішого завершення, тому пізній початок може збільшити загальну тривалість.
  • Оцінки: файл може мати бітрейт, але не мати тривалості. Тоді FFmpeg оцінює тривалість за бітрейтом і розміром файлу та попереджає, що результат може бути неточним.

Чому це важливо

Тривалість дозволяє перевірити файл, не відтворюючи його. Якщо ви очікуєте кліп на 5 хвилин і 15 секунд, а бачите 15.23 s, файл може виявитися не тим, на який ви розраховували.

Тривалість також пов'язана з іншими значеннями. FFmpeg може обчислити загальний бітрейт з розміру файлу та тривалості.

Мета ключі