Що таке файл 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 |
Використання кодеків
Якщо вам не потрібен новий медіапрогравач і ви бажаєте використовувати наявний програвач, вам потрібно буде інсталювати кілька кодеків (скорочене стиснення/декомпресія). Незважаючи на те, що завантаження кодеків є допустимим варіантом, ви повинні бути обережними щодо джерела, оскільки вони можуть містити зловмисне програмне забезпечення.