Какво е 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 г. в Русия. Водещият разработчик беше Lasse Kärkkäinen, който работи с основателя на Matroska, Steve Lhomme, и екип от програмисти. MKV е разработен като проект с отворени стандарти, което означава, че е с отворен код и е безплатен за използване. С течение на времето форматът беше подобрен и стана основата на мултимедийния формат WebM през 2010 г.
Matroska Design
Matroska добавя следните ограничения към спецификацията на EBML.
- docType на EBML Header трябва да бъде ‘matroska’.
- EBMLMaxIDLength на EBML Header трябва да бъде 4.
- EBMLMaxSizeLength на EBML Header трябва да бъде между 1 и 8 (включително).
Всички елементи от най-високо ниво са кодирани в 4 октета.
– Езикови кодове: Matroska (версия 1 до 3) използва езикови кодове, които могат да бъдат или 3-буквената библиографска форма ISO-639-2 (като „fre“ за френски), или може да се използва допълнителен код на държавата като „fre-ca“ “ за канадски френски. Започвайки от версия 4 на Matroska, ISO 639-2 или BCP 47 МОЖЕ да се използва за езикови кодове, въпреки че се препоръчва BCP 47.
- Физически типове: Те имат различно значение за аудио и видео файлове. Например, ChapterPhysicalEquiv = 60 означава (CD / 12" / 10" / 7" / TAPE / MINIDISC / DAT) за аудио и (DVD / VHS / LASERDISC) за видео.
- Структура на блок - Заглавие на блок: Заглавието на блока съдържа информация относно номера на песента, времеви клейма, тип на свързване и т.н.
- Lacing: Това е механизъм за спестяване на място при съхраняване на данни, който обикновено се използва за малки блокове от данни (кадри). Има 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 Structure: Вдъхновен е от Блоковата структура, като основната разлика е добавянето на флагове Keyframe и Discardable. Освен това всичко е същото.
Matroska структура
Един Matroska документ трябва да бъде съставен от поне един EBML документ, като се използва Matroska Document Type. Всеки EBML документ трябва да започва с EBML хедър, последван от EBML коренен елемент, който е дефиниран като сегмент. Matroska дефинира няколко елемента от най-високо ниво, които могат да се появят в рамките на Сегмента.
EBML използва система от елементи за съставяне на EBML документ. По-долу е списъкът с елементи от най-високо ниво във файла Matroska:
- EBML документ: Обвивка за целия файл.
- EBML Header: Съдържа заглавната информация за файла като DocType.
- Сегмент: Най-горният елемент, който съдържа всички други елементи от най-високо ниво.
- SeekHead: Съдържа позицията на сегментите на други елементи от най-високо ниво.
- Информация: Съдържа обща информация за сегмента.
- Пъти: Елемент от информация от най-високо ниво с много описани следи.
- Глави: Използва се за дефиниране на основни менюта и данни за дялове.
- Клъстер: Елементът от най-високо ниво, съдържащ структурата на блока.
- Cues: Елемент от най-високо ниво, който съдържа всички записи, локални за сегмента, които ускоряват търсенето на достъп.
- Прикачени файлове: Това съдържа прикачени файлове.
- Тагове: Този елемент съдържа метаданни, описващи песни, издания, глави, прикачени файлове или сегмента като цяло.
Следната таблица показва структурата на документа Matroska с повечето от елементите, показани в йерархия:
| EBML заглавка | ||||||
| Сегмент | SeekHead | Търсене | SeekID | |||
| SeekPosition | ||||||
| Информация | SegmentUID | |||||
| Име на файл на сегмент | ||||||
| PrevUID | ||||||
| Предишно име на файл | ||||||
| NextUID | ||||||
| Следващо име на файл | ||||||
| Сегмент Семейство | ||||||
| Превод на глава | ||||||
| TimestampScale | ||||||
| Продължителност | ||||||
| Дата UTC | ||||||
| Заглавие | ||||||
| MuxingApp | ||||||
| WritingApp | ||||||
| Следи | TrackEntry | номер на песен | ||||
| TrackUID | ||||||
| TrackType | ||||||
| Име | ||||||
| Език | ||||||
| CodecID | ||||||
| CodecPrivate | ||||||
| Име на кодек | ||||||
| Видео | FlagInterlaced | |||||
| FieldOrder | ||||||
| Стереорежим | ||||||
| AlphaMode | ||||||
| Ширина на пиксела | ||||||
| Височина на пиксела | ||||||
| DisplayWidth | ||||||
| DisplayHeight | ||||||
| AspectRatioType | ||||||
| Цвят | ||||||
| Аудио | Честота на вземане на проби | |||||
| Канали | ||||||
| BitDepth | ||||||
| Глави | EditionEntry | EditionUID | ||||
| EditionFlagHidden | ||||||
| EditionFlagDefault | ||||||
| EditionFlagOrdered | ||||||
| ChapterAtom | ChapterUID | |||||
| ChapterStringUID | ||||||
| ChapterTimeStart | ||||||
| ChapterTimeEnd | ||||||
| ChapterFlagHidden | ||||||
| Показване на глава | ChapString | |||||
| ChapLanguage | ||||||
| Клъстер | Времево клеймо | |||||
| SilentTracks | ||||||
| Позиция | ||||||
| Предишен размер | ||||||
| SimpleBlock | ||||||
| BlockGroup | ||||||
| EncryptedBlock | ||||||
| Реплики | CuePoint | CueTime | ||||
| CueTrackPositions | ||||||
| Прикачени файлове | Прикачен файл | Описание на файла | ||||
| Име на файл | ||||||
| FileMimeType | ||||||
| FileUID | ||||||
| FileReferral | ||||||
| FileUsedStartTime | ||||||
| FileUsedEndTime | ||||||
| Етикети | Етикет | Цели | TargetTypeValue | |||
| TargetType | ||||||
| TagTrackUID | ||||||
| TagEditionUID | ||||||
| TagChapterUID | ||||||
| TagAttachmentUID | ||||||
| SimpleTag | Име на етикет | |||||
| Език на тагове | ||||||
| TagDefault | ||||||
| TagString | ||||||
| TagBinary | ||||||
| SimpleTag |
Използване на кодеци
Ако не искате нов мултимедиен плейър и предпочитате да използвате съществуващия си плейър, ще трябва да инсталирате някои кодеци (съкратено за компресия/декомпресия). Въпреки че изтеглянето на кодеци е валидна опция, трябва да внимавате за източника и те може да съдържат зловреден софтуер.