Що таке файл MKV?
MKV (Matroska Video) — це мультимедійний контейнер, подібний до формату MOV і AVI, але він підтримує більше однієї доріжки аудіо та субтитрів в одному файлі. Файл MKV — це формат мультимедійного контейнера Matroska, який використовується для відео. MKV базується на Extensible Binary Meta Language і підтримує декілька форматів стиснення відео та аудіо. Основна відмінність між MKV та іншими відеоформатами полягає в тому, що MKV є контейнером, а не кодеком. Файли MKV зберігаються з розширенням .mkv. MKV може включати аудіо, відео та субтитри в один файл, навіть якщо ці елементи використовують різні типи кодування. Наприклад, ви можете мати файл MKV, який містить відео H.264 і MP3 або AAC для аудіо. MKV також підтримує описи, рейтинги, обкладинки та навіть пункти розділів. Є кілька ключових особливостей, завдяки яким MKV є перспективним. Ці функції включають:
— Підтримка швидкого пошуку. — Можливість вибору різних аудіо- та відеопотоків. — Підтримка субтитрів (жорстко та м’яко закодованих). — Підтримка метаданих, розділів і меню.
- Можливість транслювати онлайн. — Можливість відновлення помилкових файлів, що забезпечує можливість відтворення пошкоджених файлів.
Коротка історія
Файл MKV виник у 2002 році в Росії. Провідним розробником був Лассе Керккяйнен, який працював із засновником Matroska Стівом Ломмом і командою програмістів. MKV було розроблено як проект відкритих стандартів, що означає, що він є відкритим і вільним для використання. З плином часу формат був вдосконалений і став основою мультимедійного формату WebM у 2010 році.
Matroska Design
Matroska додає наступні обмеження до специфікації EBML.
- docType заголовка EBML має бути «matroska».
- EBMLMaxIDLength заголовка EBML має бути 4. – EBMLMaxSizeLength заголовка EBML має бути від 1 до 8 (включно).
Усі елементи верхнього рівня кодуються 4 октетами.
- Коди мов: у Matroska (версії 1–3) використовувалися коди мов, які могли бути або 3-літерною бібліографічною формою ISO-639-2 (наприклад, «fre» для французької), або додатковим кодом країни, наприклад «fre-ca». " для канадської французької мови. Починаючи з Matroska версії 4, або ISO 639-2, або BCP 47 МОЖНА використовуватися для мовних кодів, хоча BCP 47 рекомендується.
- Фізичні типи: вони мають різне значення для аудіо- та відеофайлів. Наприклад, ChapterPhysicalEquiv = 60 означає (CD / 12" / 10" / 7" / TAPE / MINIDISC / DAT) для аудіо та (DVD / VHS / LASERDISC) для відео.
- Структура блоку - Заголовок блоку: заголовок блоку містить інформацію про номер доріжки, часові позначки, тип шнурівки тощо.
- Шнуровка: це механізм для економії місця під час зберігання даних, який зазвичай використовується для невеликих блоків даних (кадрів). Існує 3 види шнурівки:
- Xiph: Frame with a size multiple of 255 coded with a 0 at the end of the size. For example, The code for 765 is 255;255;255;0.
- EBML: The frame size is coded as a difference between the previous size and this size. The first size in the lace is unsigned but others use a range shift to get a sign on each value.
- fixed-size: The size remains the same.
- Структура SimpleBlock: її натхненно структурою блоків, головною відмінністю якої є додавання прапорців Keyframe і Discardable. Крім цього, все те саме.
Структура Matroska
Документ Matroska має складатися принаймні з одного Документа EBML із використанням Типу документа Matroska. Кожен Документ EBML має починатися з Заголовка EBML, за яким слідує Кореневий елемент EBML, який визначається як сегмент. Matroska визначає кілька елементів верхнього рівня, які можуть зустрічатися в Сегменті.
EBML використовує систему елементів для створення документа EBML. Нижче наведено список елементів верхнього рівня у файлі Matroska:
- Документ EBML: оболонка для всього файлу.
- Заголовок EBML: містить інформацію заголовка для файлу, наприклад DocType.
- Сегмент: верхній елемент, який містить усі інші елементи верхнього рівня.
- SeekHead: містить положення сегментів інших елементів верхнього рівня.
- Інформація: містить загальну інформацію про сегмент.
- Доріжки: Елемент інформації верхнього рівня з описом багатьох доріжок.
- Розділи: використовуються для визначення основних меню та даних розділів.
- Кластер: Елемент верхнього рівня, що містить блочну структуру.
- Cues: Елемент верхнього рівня, який містить усі локальні записи сегмента, які прискорюють пошук доступу.
- Вкладення: містить вкладені файли.
- Теги: цей елемент містить метадані, що описують доріжки, видання, розділи, вкладення або сегмент загалом.
У наведеній нижче таблиці показано структуру документа Matroska з більшістю елементів, які відображаються в ієрархії:
| Заголовок EBML | ||||||
| Сегмент | SeekHead | Шукати | SeekID | |||
| SeekPosition | ||||||
| Інформація | SegmentUID | |||||
| Назва файлу сегмента | ||||||
| PrevUID | ||||||
| PrevFilename | ||||||
| NextUID | ||||||
| Наступне ім’я файлу | ||||||
| СегментСімейство | ||||||
| Розділ Перекласти | ||||||
| TimestampScale | ||||||
| Тривалість | ||||||
| Дата UTC | ||||||
| Назва | ||||||
| MuxingApp | ||||||
| WritingApp | ||||||
| Доріжки | TrackEntry | ТрекНомер | ||||
| TrackUID | ||||||
| TrackType | ||||||
| Ім’я | ||||||
| Мова | ||||||
| CodecID | ||||||
| CodecPrivate | ||||||
| Назва кодеку | ||||||
| Відео | FlagInterlaced | |||||
| FieldOrder | ||||||
| Стереорежим | ||||||
| AlphaMode | ||||||
| PixelWidth | ||||||
| PixelHeight | ||||||
| DisplayWidth | ||||||
| DisplayHeight | ||||||
| AspectRatioType | ||||||
| Колір | ||||||
| Аудіо | Частота вибірки | |||||
| Канали | ||||||
| BitDepth | ||||||
| Розділи | EditionEntry | EditionUID | ||||
| EditionFlagHidden | ||||||
| EditionFlagDefault | ||||||
| EditionFlagOrdered | ||||||
| ГлаваАтом | ChapterUID | |||||
| ChapterStringUID | ||||||
| ChapterTimeStart | ||||||
| ChapterTimeEnd | ||||||
| ChapterFlagHidden | ||||||
| Розділ Відображення | ChapString | |||||
| ChapLanguage | ||||||
| Кластер | Мітка часу | |||||
| SilentTracks | ||||||
| Посада | ||||||
| PrevSize | ||||||
| SimpleBlock | ||||||
| BlockGroup | ||||||
| EncryptedBlock | ||||||
| Репліки | CuePoint | CueTime | ||||
| CueTrackPositions | ||||||
| Додатки | Прикріплений файл | Опис файлу | ||||
| Ім’я файлу | ||||||
| FileMimeType | ||||||
| FileUID | ||||||
| FileReferral | ||||||
| FileUsedStartTime | ||||||
| FileUsedEndTime | ||||||
| Теги | Тег | Цілі | TargetTypeValue | |||
| TargetType | ||||||
| TagTrackUID | ||||||
| TagEditionUID | ||||||
| TagChapterUID | ||||||
| TagAttachmentUID | ||||||
| SimpleTag | TagName | |||||
| TagLanguage | ||||||
| TagDefault | ||||||
| Рядок тегів | ||||||
| TagBinary | ||||||
| SimpleTag |
Використання кодеків
Якщо вам не потрібен новий медіапрогравач і ви бажаєте використовувати наявний програвач, вам потрібно буде інсталювати кілька кодеків (скорочене стиснення/декомпресія). Незважаючи на те, що завантаження кодеків є допустимим варіантом, ви повинні бути обережними щодо джерела, оскільки вони можуть містити зловмисне програмне забезпечення.