Matroska(ロシア語: Матрёшка、マトロスカ、マトリョーシカ)はマルチメディアコンテナフォーマットの一種である。

## 概要

Matroskaは動画、音声、字幕などのマルチメディアデータを格納するコンテナフォーマットである。「.mkv」ファイル(Matroska Video)や「.mka」ファイル(Matroska Audio)として知られる。ロシアの入れ子人形マトリョーシカにちなんで名付けられた。オープンソース(GNU LGPL)で開発が行われている。

データ構造仕様にEBML(Extensible Binary Meta Language)を採用し、後方互換性と拡張性を両立させている。

家電のDVDプレーヤーなどでも一部対応した機種が存在する。DivX7が標準コンテナとしてMatroskaを採用している。Google社の動画規格WebMのコンテナとしてMatroskaのサブセットを採用している。2014年、Microsoft Windows 10がMatroskaに標準対応することがマイクロソフト社から発表された。

## 主な特徴

### 共通

- 多種多様なコーデックに対応。
  - 動画:VFW Codec, QuickTime Codec, Motion JPEG, MPEG-1/-2/-4, H.264, H.265, RealVideo, Snow, Theora, VC-1, VP8, VP9, AV1
  - 音声:AAC, AC-3, DTS, MP3, MP2, Vorbis, Opus, PCM, RealAudio, FLAC, TTA, WavPack

### MKV(Matroska Video File)

- 複数音声
- 前参照フレーム(Bフレーム)に対応
- チャプター(頭出し機能。1/1000秒単位で設定可能)
- 可変フレームレート(VFR)対応
- 高度な字幕機能(テキスト型、VisualBob型両対応)
- アスペクト比指定
- 映像、音声、字幕以外のファイル添付
- DVD-Videoのようなメニュー(未実装)

### MKA(Matroska Audio File)

- アルバム化(複数の曲を一つのファイルに入れ、順番に再生)
- 時間が同じでないファイルの多重化
- 異なるコーデックの音声を収録可能

## EBML

EBML(Extensible Binary Meta Language)はXMLを基に作られた、拡張性に優れたデータ格納方式である。

HTML、XMLの様にタグ形式(正確にはバイナリの擬似形式)で記述されており、対応していない機能においては無視するようになっている。

したがって、新機能の追加においても互換性を落とすことなく対応させることができ、なおかつ、不具合の起きにくい設計にすることを可能にした。

EBMLはRFC8794としてインターネット標準化過程の途上にある。

### 構造

XMLが要素の木構造からなるように、EBMLも要素の入れ子構造から成る。構成単位たる要素はEBML Elementと呼ばれる。要素の種類によらずEBML Elementは次の3要素から成る。

- Element ID: この要素の種類を示す識別子。XMLにおけるタグ名に相当。識別子の意味(例: `ID_5 == <H1>`)はスキーマごとで定義。
- Element Data Size: この要素の長さ(オクテット)。
- Element Data: コンテンツ。

Element自身が長さ情報を持つとは、要素間の「区切り」が明示されているということである。よってEBMLパーサーは要素が何を示すかを知らずとも、EBMLファイルを頭から読んでサイズごとに区切ることでElement集合を生成できる。

上記の通りElementはIDをもち、このIDがElementの意味/役割(セマンティックス)に結びついている。具体的な各Elementはスキーマで定義され、ID・名称・型などを持つ(例: ID\_5/`<H1>`/String型)。スキーマではなくEBML仕様で定義される特殊なElementが13種類存在している。

EBML Elementの入れ子構造からなり、かつEBMLで定めるElement配置をもつデータをEBML Documentという。EBML Documentはデータ部であるEBML Bodyと仕様部であるEBML Headerからなる。

## 拡張子

- .mkv Matroska Video(映像)
- .mka Matroska Audio(音声のみ)
- .mks Matroska Subtitles(字幕のみ)
- .mk3d Matroska 3D(3D映像)

## CodecIDの例

### ビデオ

- V\_MPEG4/ISO/AVC(H.264/MPEG-4 AVC)

### オーディオ

- A\_AAC/MPEG4/LC(AAC-LC)

## 対応ソフト

以下の「SSA」は「Sub Station Alpha」、「ASS」は「Advanced SSA」と呼ばれる一般的な字幕のファイルフォーマットである。

### メディアプレーヤー

| 名前 | OS | SSA/ASSサポート |
| --- | --- | --- |
| ALLPlayer | Windows | No |
| ALShow | No |
| BS.Player | No |
| Chameleo | クロスプラットフォーム | No |
| CorePlayer | No |
| DivX Player | No |
| Daum PotPlayer | Windows | Yes |
| GOM Player | Yes |
| Gstreamerベースのプレイヤー | クロスプラットフォーム | No |
| jetAudio | Windows | No |
| Kantaris | No |
| The KMPlayer | Yes |
| TotalMedia Theatre | No |
| Media Player Classic | Yes |
| MPlayer | クロスプラットフォーム | Yes |
| MPlayer Extended | macOS | Yes |
| ShowTime | Windows | No |
| SMPlayer | クロスプラットフォーム | Yes |
| Target Longlife Media Player | Windows | No |
| The Core Pocket Media Player | Windows Mobile | No |
| VLC media player | クロスプラットフォーム | Yes |
| xine | No |
| Zoom Player | Windows | No |
| GNOME ビデオ | Unix系 | Yes |

### メディアセンター

| 名前 | OS | SSA/ASSサポート |
| --- | --- | --- |
| Boxee | クロスプラットフォーム |  |
| DivX Connected | Windows |  |
| MediaPortal |  |
| Moovida | クロスプラットフォーム |  |
| MythTV | Linux |  |
| Plex | macOS |  |
| PS3 Media Server | クロスプラットフォーム |  |
| Xbmc |  |

### ツール

| 名前 | OS | SSA/ASSサポート |
| --- | --- | --- |
| Avidemux | クロスプラットフォーム |  |
| Conceiva ConvertHQ | Windows |  |
| HandBrake | クロスプラットフォーム |  |
| iFunia Video Converter | macOS |  |
| DivX Converter | クロスプラットフォーム |  |
| FFmpeg |  |
| FormatFactory | Windows |  |
| iVerio Software Video Converter for Camcorders | クロスプラットフォーム |  |
| MediaCoder | Windows |  |
| MKVToolnix | クロスプラットフォーム |  |
| MKV2VOB for converting MKV for playback on PS3 etc | Windows |  |
| Perian Quicktime Plugin for Mac OS X | macOS |  |
| SUPER | Windows |  |
| Total video converter |  |
| Video Converter Ultimate | Windows Mac OS |  |
| VirtualDubMod | Windows |  |
| MakeMKV |  |
| ConvertXtoDVD |  |
| XMedia Recode |  |