Какво е 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 |
Използване на кодеци
Ако не искате нов мултимедиен плейър и предпочитате да използвате съществуващия си плейър, ще трябва да инсталирате някои кодеци (съкратено за компресия/декомпресия). Въпреки че изтеглянето на кодеци е валидна опция, трябва да внимавате за източника и те може да съдържат зловреден софтуер.