Matroska(コンテナフォーマット)

Matroskaは動画、音声、字幕などのマルチメディアデータを格納するコンテナフォーマット。拡張子は.mkv(Matroska Video)や.mka(Matroska Audio)が使われる。オープンソースで開発が行われている。名称はロシアの入れ子人形マトリョーシカに由来する。

Matryoshka from Hungary (2021) by Wilfredo Rafael Rodriguez Hernandez
Matryoshka from Hungary (2021) by Wilfredo Rafael Rodriguez Hernandez

現在最も使われている動画データのコンテナフォーマットはMP4だろう。拡張子は.mp4や.m4v。先行して普及したので互換性が高く、様々なデバイスで再生できる。音声や字幕は一つしか格納できない。

一方、後発のMatroskaは互換性はMP4に劣るが、複数の音声や字幕を格納できるなどメリットも多い。将来の利用を考えて、動画データのコンテナフォーマットはMP4よりもMatroskaを使うことが多い。Googleが提唱しているWebMも将来性があるのだろうが、そもそもMatroskaのサブセットなので、Matroskaに比べると対応しているコーデックが少ない。

動画データのプレーヤーとしてはPC、スマホともVLCを使用している。VLCはMatroskaの再生に適している。

コンテナフォーマットの変換が必要なときはFFmpegを使っている。例えば、m4vからmkvに無劣化で変換する場合、シェルから下記のようにFFmpegを実行する。

ffmpeg -i infile.m4v -c:v copy -c:a copy outfile.mkv

FFmpegの実行例(Windows PowerShell)
FFmpegの実行例(Windows PowerShell)

変換対象のファイルが複数あるときもある。例えば、カレントディレクトリにあるすべてのm4vファイルをmkvファイルに変換したい場合、Windows PowerShellから下記のようなスクリプトを実行して、FFmpegで変換処理を行う。

Get-ChildItem -Filter *.m4v | ForEach-Object {
    $InputFile = $_.FullName
    $OutputFile = [System.IO.Path]::ChangeExtension($InputFile, ".mkv")
    ffmpeg -i $InputFile -c:v copy -c:a copy $OutputFile
    Write-Host "Converted $InputFile to $OutputFile"
}

FFmpegのスクリプトからの実行例(Windows PowerShell)
FFmpegのスクリプトからの実行例(Windows PowerShell)


Matroska Media Container Homepage
公式サイト。

File:Matryoshka from Hungary.jpg - Wikimedia Commons

VLCメディアプレーヤー

コメント