Τι είναι ένα αρχείο MKV;
Το MKV (Matroska Video) είναι ένα κοντέινερ πολυμέσων παρόμοιο με τη μορφή MOV και AVI, αλλά υποστηρίζει περισσότερα από ένα κομμάτια ήχου και υπότιτλων στο ίδιο αρχείο. Ένα αρχείο MKV είναι η μορφή κοντέινερ πολυμέσων Matroska που χρησιμοποιείται για βίντεο. Το MKV βασίζεται σε επεκτάσιμη δυαδική μετα-γλώσσα και υποστηρίζει πολλές μορφές συμπίεσης βίντεο και ήχου. Η κύρια διαφορά μεταξύ του MKV και άλλων μορφών βίντεο είναι ότι το MKV είναι ένα κοντέινερ και όχι ένας κωδικοποιητής. Τα αρχεία MKV αποθηκεύονται με την επέκταση αρχείου .mkv. Το MKV μπορεί να ενσωματώσει ήχο, βίντεο και υπότιτλους σε ένα μόνο αρχείο ακόμα κι αν αυτά τα στοιχεία χρησιμοποιούν διαφορετικούς τύπους κωδικοποίησης. Για παράδειγμα, θα μπορούσατε να έχετε ένα αρχείο MKV που περιέχει βίντεο H.264 και MP3 ή AAC για ήχο. Το MKV υποστηρίζει επίσης περιγραφές, βαθμολογίες, εξώφυλλα, ακόμη και σημεία κεφαλαίων. Υπάρχουν πολλά βασικά χαρακτηριστικά που το MKV είναι ασφαλές για το μέλλον. Αυτά τα χαρακτηριστικά περιλαμβάνουν:
- Υποστήριξη για γρήγορη αναζήτηση.
- Δυνατότητα επιλογής διαφορετικών ροών ήχου και βίντεο.
- Υποστήριξη για υπότιτλους (σκληρό και soft-coded).
- Υποστήριξη για μεταδεδομένα, κεφάλαια και μενού.
- Δυνατότητα ροής στο διαδίκτυο.
- Δυνατότητα ανάκτησης λανθασμένων αρχείων που παρέχουν τη δυνατότητα αναπαραγωγής κατεστραμμένων αρχείων.
Σύντομη Ιστορία
Το αρχείο 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) χρησιμοποίησε κωδικούς γλώσσας που μπορεί να είναι είτε η βιβλιογραφική μορφή ISO-639-2 με 3 γράμματα (όπως “fre” για τα γαλλικά), είτε επιπλέον κωδικός χώρας όπως “fre-ca” " για τα καναδικά γαλλικά. Ξεκινώντας από την έκδοση Matroska 4, ΜΠΟΡΕΙ να χρησιμοποιείται είτε το 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: Είναι εμπνευσμένη από τη δομή Block με κύρια διαφορά την προσθήκη σημαιών Keyframe και Discardable. Εκτός από αυτό, όλα είναι ίδια.
Δομή Matroska
Ένα έγγραφο Matroska πρέπει να αποτελείται από τουλάχιστον ένα EBML Document χρησιμοποιώντας τον Matroska Document Type. Κάθε Έγγραφο EBML πρέπει να ξεκινά με μια Κεφαλίδα EBML ακολουθούμενη από το Στοιχείο ρίζας EBML που ορίζεται ως τμήμα. Η Matroska ορίζει πολλά Στοιχεία Ανώτατου Επιπέδου που μπορεί να προκύψουν μέσα στο Τμήμα.
Το EBML χρησιμοποιεί ένα σύστημα στοιχείων για τη σύνταξη ενός εγγράφου EBML. Ακολουθεί η λίστα των στοιχείων ανώτατου επιπέδου στο αρχείο Matroska:
- Έγγραφο EBML: Περιτύλιγμα για ολόκληρο το αρχείο.
- EBML Header: Περιέχει τις πληροφορίες κεφαλίδας για το αρχείο όπως το DocType.
- Τμήμα: Το επάνω στοιχείο που περιέχει όλα τα άλλα στοιχεία ανώτατου επιπέδου.
- SeekHead: Περιέχει τη θέση των τμημάτων άλλων στοιχείων ανώτατου επιπέδου.
- Πληροφορίες: Περιέχει γενικές πληροφορίες για το Τμήμα.
- Κομμάτια: Ένα στοιχείο ανωτάτου επιπέδου πληροφοριών με πολλά κομμάτια που περιγράφονται.
- Κεφάλαια: Χρησιμοποιείται για τον ορισμό βασικών μενού και δεδομένων διαμερισμάτων.
- Cluster: Το Στοιχείο Ανώτατου Επιπέδου που περιέχει τη δομή Block.
- Συνθήματα: Στοιχείο ανώτατου επιπέδου που περιέχει όλες τις τοπικές εγγραφές στο Τμήμα που επιταχύνουν την αναζήτηση αναζήτησης.
- Συνημμένα: Περιέχει συνημμένα αρχεία.
- Ετικέτες: Αυτό το στοιχείο περιέχει μεταδεδομένα που περιγράφουν Κομμάτια, Εκδόσεις, Κεφάλαια, Συνημμένα ή το Τμήμα ως σύνολο.
Ο παρακάτω πίνακας δείχνει τη δομή του εγγράφου Matroska με τα περισσότερα από τα στοιχεία να εμφανίζονται σε μια ιεραρχία:
Κεφαλίδα EBML | ||||||
Τμήμα | SeekHead | Αναζήτηση | Αναγνωριστικό αναζήτησης | |||
Αναζήτηση Θέσης | ||||||
Πληροφορίες | SegmentUID | |||||
Όνομα αρχείου τμήματος | ||||||
PrevUID | ||||||
Προηγούμενο όνομα αρχείου | ||||||
NextUID | ||||||
Επόμενο Όνομα αρχείου | ||||||
ΤμήμαΟικογένεια | ||||||
Κεφάλαιο Μετάφραση | ||||||
TimestampScale | ||||||
Διάρκεια | ||||||
ΗμερομηνίαUTC | ||||||
Τίτλος | ||||||
MuxingApp | ||||||
WritingApp | ||||||
Κομμάτια | TrackEntry | Αριθμός κομματιού | ||||
TrackUID | ||||||
TrackType | ||||||
Όνομα | ||||||
Γλώσσα | ||||||
CodecID | ||||||
CodecPrivate | ||||||
CodecName | ||||||
Βίντεο | Flag Interlaced | |||||
Πεδίο Παραγγελία | ||||||
StereoMode | ||||||
AlphaMode | ||||||
Πλάτος Pixel | ||||||
Pixel Height | ||||||
Πλάτος εμφάνισης | ||||||
Ύψος εμφάνισης | ||||||
Aspect RatioType | ||||||
Χρώμα | ||||||
Ήχος | Συχνότητα δειγματοληψίας | |||||
Κανάλια | ||||||
BitDepth | ||||||
Κεφάλαια | Εισαγωγή Έκδοσης | EditionUID | ||||
EditionFlagHidden | ||||||
EditionFlagDefault | ||||||
EditionFlagOrdered | ||||||
ΚεφάλαιοAtom | ChapterUID | |||||
ChapterStringUID | ||||||
ChapterTimeStart | ||||||
Κεφάλαιο Χρόνος Τέλος | ||||||
ChapterFlagHidden | ||||||
Εμφάνιση κεφαλαίου | ChapString | |||||
ChapLanguage | ||||||
Συστάδα | Χρονική σήμανση | |||||
SilentTracks | ||||||
Θέση | ||||||
Προηγούμενο Μέγεθος | ||||||
SimpleBlock | ||||||
BlockGroup | ||||||
EncryptedBlock | ||||||
Συνθήματα | CuePoint | CueTime | ||||
CueTrackPositions | ||||||
Συνημμένα | AttachedFile | Περιγραφή αρχείου | ||||
Όνομα αρχείου | ||||||
FileMimeType | ||||||
FileUID | ||||||
Παραπομπή αρχείου | ||||||
FileUsedStartTime | ||||||
FileUsedEndTime | ||||||
Ετικέτες | Ετικέτα | Στόχοι | TargetTypeValue | |||
TargetType | ||||||
TagTrackUID | ||||||
TagEditionUID | ||||||
TagChapterUID | ||||||
TagAttachmentUID | ||||||
SimpleTag | Όνομα ετικέτας | |||||
TagLanguage | ||||||
TagDefault | ||||||
TagString | ||||||
TagBinary | ||||||
SimpleTag |
Χρήση κωδικοποιητών
Εάν δεν θέλετε μια νέα συσκευή αναπαραγωγής πολυμέσων και προτιμάτε να χρησιμοποιήσετε την υπάρχουσα συσκευή αναπαραγωγής σας, θα χρειαστεί να εγκαταστήσετε κάποιους κωδικοποιητές (συντομογραφία για συμπίεση/αποσυμπίεση). Παρόλο που η λήψη κωδικοποιητών είναι μια έγκυρη επιλογή, θα πρέπει να είστε προσεκτικοί σχετικά με την πηγή και ενδέχεται να περιέχουν κακόβουλο λογισμικό.