Was ist eine MKV-Datei?
MKV (Matroska Video) ist ein Multimedia-Container ähnlich dem Format MOV und AVI, unterstützt jedoch mehr als eine Audio- und Untertitelspur in derselben Datei. Eine MKV-Datei ist das Matroska-Multimedia-Containerformat, das für Videos verwendet wird. MKV basiert auf Extensible Binary Meta Language und unterstützt mehrere Video- und Audiokompressionsformate. Der Hauptunterschied zwischen MKV und anderen Videoformaten besteht darin, dass MKV ein Container und kein Codec ist. MKV-Dateien werden mit der Dateierweiterung .mkv gespeichert. MKV kann Audio, Video und Untertitel in eine einzige Datei integrieren, selbst wenn diese Elemente unterschiedliche Codierungsarten verwenden. Beispielsweise könnten Sie eine MKV-Datei haben, die H.264-Video und MP3 oder AAC für Audio enthält. MKV unterstützt auch Beschreibungen, Bewertungen, Coverbilder und sogar Kapitelpunkte. Es gibt mehrere Schlüsselfunktionen, die MKV zukunftssicher machen. Zu diesen Funktionen gehören:
- Unterstützung für die schnelle Suche.
- Möglichkeit, verschiedene Audio- und Videostreams auszuwählen.
- Unterstützung für Untertitel (hartcodiert und weichcodiert).
- Unterstützung für Metadaten, Kapitel und Menüs.
- Möglichkeit zum Online-Streaming.
- Fähigkeit, fehlerhafte Dateien wiederherzustellen, die die Möglichkeit bieten, beschädigte Dateien abzuspielen.
Kurze Geschichte
Die MKV-Datei entstand 2002 in Russland. Der leitende Entwickler war Lasse Kärkkäinen, der mit dem Gründer von Matroska, Steve Lhomme, und einem Team von Programmierern zusammenarbeitete. MKV wurde als Open-Standards-Projekt entwickelt, was bedeutet, dass es Open Source und kostenlos nutzbar ist. Im Laufe der Zeit wurde das Format verbessert und wurde 2010 zur Grundlage des WebM-Multimediaformats.
Matroska-Design
Matroska fügt der EBML-Spezifikation die folgenden Einschränkungen hinzu.
- Der docType des EBML Header muss ‘matroska’ sein.
- Die EBMLMaxIDLength des EBML-Headers muss 4 sein.
- Die EBMLMaxSizeLength des EBML-Headers muss zwischen 1 und 8 (einschließlich) liegen.
Alle Elemente der obersten Ebene sind in 4 Oktetts codiert.
- Sprachcodes: Matroska (Version 1 bis 3) verwendete Sprachcodes, die entweder die bibliografische ISO-639-2-Form mit 3 Buchstaben sein können (wie “fre” für Französisch) oder zusätzliche Ländercodes wie “fre-ca " für kanadisches Französisch. Ab Matroska Version 4 KÖNNEN entweder ISO 639-2 oder BCP 47 für Sprachcodes verwendet werden, obwohl BCP 47 empfohlen wird.
- Physische Typen: Diese haben unterschiedliche Bedeutungen für Audio- und Videodateien. Beispielsweise bedeutet ChapterPhysicalEquiv = 60 (CD / 12” / 10" / 7" / TAPE / MINIDISC / DAT) für Audio und (DVD / VHS / LASERDISC) für Video.
- Blockstruktur - Blockheader: Der Blockheader enthält Informationen zu Titelnummer, Zeitstempel, Art der Schnürung usw.
- Lacing: Dies ist ein Mechanismus zum Speichern von Platz beim Speichern von Daten, der normalerweise für kleine Datenblöcke (Frames) verwendet wird. Es gibt 3 Arten der Schnürung:
- 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-Struktur: Sie ist von der Block-Struktur inspiriert, wobei der Hauptunterschied in der Hinzufügung von Keyframe- und Discardable-Flags besteht. Ansonsten ist alles gleich.
Matroska-Struktur
Ein Matroska-Dokument muss aus mindestens einem EBML-Dokument bestehen, das den Matroska-Dokumenttyp verwendet. Jedes EBML-Dokument muss mit einem EBML-Header beginnen, gefolgt vom EBML-Wurzelelement, das als Segment definiert ist. Matroska definiert mehrere Top-Level-Elemente, die innerhalb des Segments vorkommen können.
EBML verwendet ein System von Elementen, um ein EBML-Dokument zu erstellen. Das Folgende ist die Liste der Top-Level-Elemente in der Matroska-Datei:
- EBML-Dokument: Wrapper für die gesamte Datei.
- EBML Header: Enthält die Header-Informationen für die Datei wie DocType.
- Segment: Das oberste Element, das alle anderen Elemente der obersten Ebene enthält.
- SeekHead: Enthält die Position von Segmenten anderer Top-Level-Elemente.
- Info: Enthält allgemeine Informationen über das Segment.
- Tracks: Ein Informationselement der obersten Ebene mit vielen beschriebenen Tracks.
- Kapitel: Wird verwendet, um grundlegende Menüs und Partitionsdaten zu definieren.
- Cluster: Das Top-Level-Element, das die Blockstruktur enthält.
- Cues: Ein Top-Level-Element, das alle lokalen Einträge für das Segment enthält, die den Zugriff beschleunigen.
- Anhänge: Enthält angehängte Dateien.
- Tags: Dieses Element enthält Metadaten, die Tracks, Editionen, Kapitel, Anhänge oder das Segment als Ganzes beschreiben.
Die folgende Tabelle zeigt die Struktur des Matroska-Dokuments, wobei die meisten Elemente in einer Hierarchie angezeigt werden:
EBML-Header | ||||||
Segment | Suchkopf | Suche | SeekID | |||
Suchposition | ||||||
Infos | SegmentUID | |||||
SegmentDateiname | ||||||
VorherigeUID | ||||||
ZurückDateiname | ||||||
NächsteUID | ||||||
NächsterDateiname | ||||||
SegmentFamilie | ||||||
KapitelÜbersetzen | ||||||
ZeitstempelSkalierung | ||||||
Dauer | ||||||
DatumUTC | ||||||
Titel | ||||||
MuxingApp | ||||||
SchreibApp | ||||||
Spuren | TrackEintrag | Titelnummer | ||||
TrackUID | ||||||
Spurtyp | ||||||
Name | ||||||
Sprache | ||||||
CodecID | ||||||
CodecPrivat | ||||||
CodecName | ||||||
Videos | FlagInterlaced | |||||
FieldOrder | ||||||
StereoModus | ||||||
AlphaMode | ||||||
Pixelbreite | ||||||
Pixelhöhe | ||||||
Anzeigebreite | ||||||
Anzeigehöhe | ||||||
AspectRatioType | ||||||
Farbe | ||||||
Ton | Abtastfrequenz | |||||
Kanäle | ||||||
Bittiefe | ||||||
Kapitel | AusgabeEintrag | EditionUID | ||||
EditionFlagHidden | ||||||
EditionFlagDefault | ||||||
EditionFlagOrdered | ||||||
KapitelAtom | KapitelUID | |||||
KapitelStringUID | ||||||
KapitelZeitStart | ||||||
KapitelZeitEnde | ||||||
KapitelFlagAusgeblendet | ||||||
KapitelAnzeige | ChapString | |||||
ChapSprache | ||||||
Cluster | Zeitstempel | |||||
SilentTracks | ||||||
Stelle | ||||||
VorherigeGröße | ||||||
SimpleBlock | ||||||
BlockGruppe | ||||||
VerschlüsselterBlock | ||||||
Stichworte | CuePoint | CueTime | ||||
CueTrackPositionen | ||||||
Anhänge | AngehängteDatei | Dateibeschreibung | ||||
Dateiname | ||||||
FileMimeType | ||||||
DateiUID | ||||||
Dateiverweis | ||||||
FileUsedStartTime | ||||||
FileUsedEndTime | ||||||
Stichworte | Tag | Ziele | Zieltypwert | |||
Zieltyp | ||||||
TagTrackUID | ||||||
TagEditionUID | ||||||
TagKapitelUID | ||||||
TagAttachmentUID | ||||||
SimpleTag | TagName | |||||
TagSprache | ||||||
TagDefault | ||||||
TagString | ||||||
TagBinär | ||||||
SimpleTag |
Codecs verwenden
Wenn Sie keinen neuen Mediaplayer möchten und lieber Ihren vorhandenen Player verwenden möchten, müssen Sie einige Codecs (Abkürzung für Komprimierung/Dekomprimierung) installieren. Auch wenn das Herunterladen von Codecs eine gültige Option ist, sollten Sie auf die Quelle achten, da diese möglicherweise Malware enthalten.