Ano ang MKV File?
Ang MKV (Matroska Video) ay isang multimedia container na katulad ng MOV at AVI na format ngunit sinusuportahan nito ang higit sa isang audio at subtitle track sa parehong file. Ang MKV file ay ang Matroska multimedia container format na ginagamit para sa video. Ang MKV ay batay sa Extensible Binary Meta Language at sinusuportahan nito ang ilang mga format ng video at audio compression. Ang pangunahing pagkakaiba sa pagitan ng MKV at iba pang mga format ng video ay ang MKV ay isang lalagyan at hindi isang codec. Sine-save ang mga MKV file gamit ang extension ng .mkv file. Maaaring isama ng MKV ang audio, video, at mga subtitle sa isang file kahit na ang mga elementong iyon ay gumagamit ng iba’t ibang uri ng pag-encode. Halimbawa, maaari kang magkaroon ng MKV file na naglalaman ng H.264 na video at MP3 o AAC para sa audio. Sinusuportahan din ng MKV ang mga paglalarawan, rating, cover art, at kahit na mga punto ng kabanata. Mayroong ilang mga pangunahing tampok na MKV ay hinaharap-patunay. Kasama sa mga feature na ito ang:
- Suporta para sa Mabilis na paghahanap.
- Kakayahang pumili ng iba’t ibang audio at video stream.
- Suporta para sa mga subtitle (hard-coded at soft-coded).
- Suporta para sa metadata, mga kabanata, at mga menu.
- Kakayahang mag-stream online.
- Kakayahang mabawi ang mga maling file na nagbibigay ng kakayahang maglaro ng mga sirang file.
Maikling Kasaysayan
Ang MKV file ay nagmula noong 2002 sa Russia. Ang nangungunang developer ay si Lasse Kärkkäinen na nagtrabaho kasama ang tagapagtatag ng Matroska, Steve Lhomme, at isang pangkat ng mga programmer. Ang MKV ay binuo bilang isang open standards project, na nangangahulugan na ito ay open source at malayang gamitin. Sa paglipas ng panahon, ang format ay napabuti at naging batayan ng WebM multimedia format noong 2010.
Matroska Design
Idinagdag ni Matroska ang sumusunod na mga hadlang sa detalye ng EBML.
- The EBML Header’s docType must be ‘matroska’.
- The EBML Header’s EBMLMaxIDLength must be 4.
- The EBML Header’s EBMLMaxSizeLength must be between 1 and 8 (inclusive).
Ang lahat ng mga top-level na elemento ay naka-code sa 4 na octet.
- Language codes: Matroska (version 1 through 3) used language codes that can be either the 3 letters bibliographic ISO-639-2 form (like “fre” for french), or additional country code could be used like like “fre-ca” for Canadian French. Starting in Matroska version 4, either ISO 639-2 or BCP 47 MAY be used for language codes, although BCP 47 is recommended.
- Physical Types: These have different meaning for both audio and video files. For example, ChapterPhysicalEquiv = 60 means (CD / 12" / 10" / 7" / TAPE / MINIDISC / DAT) for audio and (DVD / VHS / LASERDISC) for video.
- Block Structure - Block Header: Block header contains information regarding track number, timestamps, type of lacing, etc.
- Lacing: It is a mechanism to save space when storing data that is typically used for small blocks of data (frames). There are 3 types of lacing:
- 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: It is inspired by the Block structure with the main difference being the addition of Keyframe and Discardable flags. Other than that, everything is the same.
Istraktura ng Matroska
Ang isang Matroska na dokumento ay dapat na binubuo ng hindi bababa sa isang EBML Document gamit ang Matroska Document Type. Ang bawat EBML Document ay dapat magsimula sa isang EBML Header na sinusundan ng EBML Root Element na tinukoy bilang isang Segment. Tinutukoy ni Matroska ang ilang Top-Level Elements na maaaring mangyari sa loob ng Segment.
Gumagamit ang EBML ng isang sistema ng Mga Elemento upang bumuo ng isang EBML na Dokumento, Ang sumusunod ay ang listahan ng mga Nangungunang Antas na elemento sa Matroska file:
- EBML Document: Wrapper for the whole file.
- EBML Header: It contains the header information for the file like DocType.
- Segment: The top element that contains all other top-level elements.
- SeekHead: It contains the position of Segments of other Top-Level Elements.
- Info: It contains general information about the Segment.
- Tracks: A Top-Level Element of information with many tracks described.
- Chapters: It is used to define basic menus and partition data.
- Cluster: The Top-Level Element containing the Block structure.
- Cues: A Top-Level Element that contains all entries local to the Segment which speed seeking access.
- Attachments: This contains attached files.
- Tags: This element contains metadata describing Tracks, Editions, Chapters, Attachments, or the Segment as a whole.
Ang sumusunod na talahanayan ay nagpapakita ng istraktura ng Matroska na dokumento na may karamihan sa mga elemento na ipinapakita sa isang hierarchy:
EBML Header | ||||||
Segment | SeekHead | Seek | SeekID | |||
SeekPosition | ||||||
Info | SegmentUID | |||||
SegmentFilename | ||||||
PrevUID | ||||||
PrevFilename | ||||||
NextUID | ||||||
NextFilename | ||||||
SegmentFamily | ||||||
ChapterTranslate | ||||||
TimestampScale | ||||||
Duration | ||||||
DateUTC | ||||||
Title | ||||||
MuxingApp | ||||||
WritingApp | ||||||
Tracks | TrackEntry | TrackNumber | ||||
TrackUID | ||||||
TrackType | ||||||
Name | ||||||
Language | ||||||
CodecID | ||||||
CodecPrivate | ||||||
CodecName | ||||||
Video | FlagInterlaced | |||||
FieldOrder | ||||||
StereoMode | ||||||
AlphaMode | ||||||
PixelWidth | ||||||
PixelHeight | ||||||
DisplayWidth | ||||||
DisplayHeight | ||||||
AspectRatioType | ||||||
Color | ||||||
Audio | SamplingFrequency | |||||
Channels | ||||||
BitDepth | ||||||
Chapters | EditionEntry | EditionUID | ||||
EditionFlagHidden | ||||||
EditionFlagDefault | ||||||
EditionFlagOrdered | ||||||
ChapterAtom | ChapterUID | |||||
ChapterStringUID | ||||||
ChapterTimeStart | ||||||
ChapterTimeEnd | ||||||
ChapterFlagHidden | ||||||
ChapterDisplay | ChapString | |||||
ChapLanguage | ||||||
Cluster | Timestamp | |||||
SilentTracks | ||||||
Position | ||||||
PrevSize | ||||||
SimpleBlock | ||||||
BlockGroup | ||||||
EncryptedBlock | ||||||
Cues | CuePoint | CueTime | ||||
CueTrackPositions | ||||||
Attachments | AttachedFile | FileDescription | ||||
FileName | ||||||
FileMimeType | ||||||
FileUID | ||||||
FileReferral | ||||||
FileUsedStartTime | ||||||
FileUsedEndTime | ||||||
Tags | Tag | Targets | TargetTypeValue | |||
TargetType | ||||||
TagTrackUID | ||||||
TagEditionUID | ||||||
TagChapterUID | ||||||
TagAttachmentUID | ||||||
SimpleTag | TagName | |||||
TagLanguage | ||||||
TagDefault | ||||||
TagString | ||||||
TagBinary | ||||||
SimpleTag |
Gumagamit ng mga Codec
Kung ayaw mo ng bagong media player at mas gusto mong gamitin ang iyong kasalukuyang player, kakailanganin mong mag-install ng ilang codec(shorthand para sa compression/decompression). Kahit na ang pag-download ng mga codec ay isang wastong opsyon, dapat kang mag-ingat sa pinagmulan at maaaring naglalaman ang mga ito ng malware.