7 - 24 MatroskaでソフトSSA

← (P)もくじ(I)(N) →

Matroska動画: 特徴と作成

2003年 7月 8日

Matroska Video (.MKV) では、ほかではできないようなことが、いろいろできます。 ここでは、そのなかのひとつ、「SSAソフトサブ」と呼ばれる柔軟な字幕システムについてご紹介しましょう。 後半では動画作成者向けに実際のMUX法を説明します。

  1. サンプル1: 英語と日本語の基本的なソフトSSA
  2. MKVサンプル 2: 世界初? タタール語のファンサブ
  3. MKVサンプル 3: 8か国語SSAソフト字幕・カラオケつき
  4. なぜソフトサブが良いか
  5. 作成編: Matroska動画の作成
  6. 歴史ノート
  7. リンク

MKVサンプル 1: 英語と日本語の基本的なソフトSSA

2003年7月2日作成

2003年7月2日: 英語と日本語のSSAソフト字幕UTF-16を埋め込んだMKVファイルの構成に成功した。 MPCで完全に再生が可能。 グラフ結果追加情報と画面キャプチャー。 MKVファイルそれ自体についてはhttp://matroska.tripod.co.jpをごらんください。

MKVサンプル 2: 世界初? タタール語のファンサブ

2003年7月7日作成

2003年7月7日 タタル語字幕: OGMでは不可能なタタル語の字幕が、MKVでは簡単に実現できる。

タタル語はロシア語やウクライナ語からみて特殊な文字を6文字ほど含んでいる。 目立つものでは、例えば、U+04D9 CYRILLIC SMALL LETTER SCHWA がある。 Cyrillic Page 04 Unicode 2.1 を見よ。

VobSubのコードページ切り替えでは、この文字セットをコードページとして指定することができない。 したがって、原則としてOGMソフトサブではタタル語を使えない。

しかし、MKVでは、SRT、SSAともタタル語のソフトサブが可能である。

これは、英語、ロシア語、タタル語の3言語のSSAをソフトMUXしたMKVである。より詳しいメモ

MKVサンプル 3: 8か国語SSAソフト字幕・カラオケつき

2003年7月8日作成
日本語版の画像例
SSAなので字幕のフォント・色・位置などを指定できる。画面上にローマ字、画面下に漢字かなを出した例。
英語版の画像例
英語字幕に切り替え。
イタリア語版の例
おしゃれなイタリア語版ミュウミュウ。
字幕をオフにした画像例
もちろん必要なければ字幕をオフにできる。画面すっきり。
カラオケ字幕
歌に連動して色が流れるように変わっていくカラオケ字幕も、 ソフトサブで。字幕はスウェーデン語。 コードページの切り替えなしで、ウムラウトやリングのついた特殊文字が正しく表示される。
字幕が二重に出る例
複数の人が同時にしゃべる場合の字幕も、色を変えたりして見やすく表示させることができる。 これはハンガリー語。

ひとつの動画ファイルにこのように8言語の字幕が内蔵されており、 ごらんのようにDVDの字幕(SUB)より表情豊かだ。 SSA/ASSで可能なことは、これだけではない。 例えば、フェイドイン・アウト、文字・影・輪郭ごとの色や透明度のコントロール、字幕の移動、X・Y軸方向へのフォントの伸縮、 X・Y・Z軸それぞれに対するフォントの回転なども行える。 それらのエフェクトがどういうときに役立つかの説明はここでは省くが、 「OGMのSRT字幕に比べて、SSAはずいぶんおもしろいことができるのだなぁ」という感触はつかめると思う (もちろんMatroskaはSRTも内蔵できるので、SRTで十分な場面ではSRTを使える)。

Matroskaが標準採用しようとしている字幕フォーマットは、このSSAよりさらに柔軟な、XMLベースの字幕フォーマットUSFである。 USFは現在、まだ仕様が固まっていないものの、草案にあるUSF形式は、MPCとTCMPですでにサポートされている。 このプロジェクトのスケールの大きさがお分かりいただけただろうか。

「MKVといえばソフト字幕」と早とちりしないでほしい。 MKV(Matroska)の本質は何かと言えば、概念的にはOGMをオープンソースにし、さらに拡張したものだ。 この種の総合マルチメディア形式として初めてのオープン開発ということと、 概念的にOGMのスーパーセットである、ということがMKVの本質であり、 SSA字幕はそれらのなかのひとつの側面にすぎない。 強力な字幕サポートはMKVのポテンシャルの一例にすぎないのだ。

この『東京ミュウミュウ』のサンプルは最終的には15か国語字幕にまで発展しました。 サンプルファイルのダウンロード再生に必要な一式(2003年8月4日版・これが最新とは限りません)。

なぜソフトサブが良いか

ハードサブとは、字幕が画像の一部として焼き込まれているもので、字幕を消せない。 ソフトサブは、再生時に字幕を動的に合成する方法で、字幕をオンオフできる。

ソフトサブが良いのは、決して「じゃまなときは字幕をオフにできるから」「複数字幕を切り替えられるから」というだけではない。 字幕を画像として焼き込むと(字幕の細かい文字のせいで)動画データが複雑になり、結果としてファイルが大きくなってしまう。 ファイルを同じ大きさに保ったとすると、ソフトサブの場合より画質が落ちてしまう。 例えば、以下で紹介するサンプルファイルは、 ソフトサブならば3600KB程度なのに、字幕をハードサブとして焼き込むと同じ品質設定で4400KBになってしまう。 字幕のこちゃこちゃした文字は意外なほどビットレートを食うのだ。 ハードサブとソフトサブの長所短所についての詳細

これまでOGMという形式の動画だとソフトサブを使えたが、その場合の字幕形式は最もプレーンなSRTというものだった。 SSAなどと違って、字幕の文字色や配置を指定することもできない。 再生時に動的に字幕を合成するといっても、ほとんど最低限度のことしかできなかった。 OGMに埋め込まれたソフトサブには、いくつかの欠点がある。

Matroskaではこれらの問題は解決される

作成編: Matroska動画の作成

注: この記事は MMKmerge 0.5.0 時代のものであり、現在は GraphEdit を使う必要ありません。 参考リンク: DVD→AVI・OGM・MKV入門AAC音声のOGM・MKV・MP4動画を作ろう

以下のメモは一般のユーザにとっても参考になる部分があるかもしれないが、 動画作成者を対象に、SSAソフトサブ、それもマルチサブの方法を具体的に説明する。 このメモの説明は2003年7月8日現在のものであり、まだGUIが未整備であるうえ、 コマンドラインツール mkvmerger 0.5.0 もSSAサポートに不具合があるので、GraphEdit を使う。

なお、ビデオとオーディオだけのMatroskaはVdubModなどを使ってふつうに簡単に作れる。 また、SRTソフトサブは、mkvmerge を使って簡単に作成できる。

作成方法の説明

ビデオ、オーディオ、SSA字幕データを用意する。 オーディオは現段階では Vorbis が良い。 SSA字幕は Windows標準のユニコード(UTF-16 LE BOM)にしておく。 現段階では、安全のために、Verdana や MS UI Gothic のような一般的なフォントを指定するのが良い。

作成・再生に使うべきフィルター(2003年7月8日現在)は、

現時点でのバージョンは Matroska_20030708.zipにまとめてある。 最新情報については、公式サイトguliverkliを参照。

GraphEdit を起動したら、Ctrl + F で必要なフィルタをロードする。 やり方はGraphEditを使ったOGMの再編集と同様だ。 Matroska Muxer を使って多重化する。 File Writer で出力ファイル名を指定、ビデオファイルとオーディオファイルを Ctrl + R で読み込む。 SSA字幕については直接レンダリングせず、Ctrl + F で、SubtitleSource (S_SSA)経由で読み込むことに注意。 日本語の字幕を作るときは、自動でワードラッピングを行いやすいように、語句の切れ目に適宜、半角スペースを入れると良い。 適当に切れ目があるほうが、べたで書くより字幕も読みやすくなる。 この問題の技術的側面については、Unicode Standard Annex (UAX) #14 Line Breaking Propertiesを参照。

必要な結線をしてマクスを行う。以下のグラフでは、1つのビデオ、1つのオーディオと8つの字幕の10トラックをMUXしている。

グラフ(PNG画像)

MkvMerge についてのメモ

mkvmerge 0.5.0 は、SRT字幕を正しく処理できるが、 SSA字幕の処理にバグがある。

2003年7月3日 mkvmerge 0.5.0

基本の操作
mkvmerge -o out.mkv in.avi in.ogg --sub-charset 0:SJIS sjis.srt
--sub-charset 0:SJIS スイッチは対象になるSRTより前につける。 字幕の1つめはTID 0 であり、1や3でない
これはダメ
mkvmerge -o out.mkv in.avi in.ogg --sub-charset 3:UTF-8 utf8.srt
これが正しい
mkvmerge -o out.mkv in.avi in.ogg --sub-charset 0:UTF-8 utf8.srt
字幕をいっぱい付けるときは全部UTF8で用意してTIDを-1にセットするとラク
mkvmerge -o out.mkv in.avi in.ogg --sub-charset -1:UTF-8 utf8.srt
言語コードの打ち方
mkvmerge -o out.mkv in.avi in.ogg --sub-charset 0:UTF-8 --language 0:jpn utf8.srt
これは問題ないが、
mkvmerge -o out.mkv in.avi in.ogg en.srt
SSAはフリーズする
mkvmerge -o out.mkv in.avi in.ogg en.ssa

2003年7月5日 mkvmerge 0.5.0 が SSA に対して機能しないのは既知のバグ。 次のバージョンでfixされるだろう。Win98でのサポートもまだこれからのようだ。

歴史ノート

2003年6月7日に、Matroska動画(.MKV)の短く簡単な紹介である「What's Matroska?」を公開した。 日本語版「Matroskaって何?」もある。 ところが、OGMと違ってオープンソースのMKVの開発は速い。 上の紹介記事から今日までの1か月で、プロジェクトguliverkliMKVtoolnixなどの大きな前進があり、 SRT字幕が(それもユニコードベースで)OGMなみに安定して使えるようになったばかりか、 OGMでは使えなかったSSA字幕がいちおう実用可能となった。 2003年6月17日ごろ公開されたMatroska Muxer 1.0.0.5ほかの一連のツールのおかげだ。 これが本家 Matroska.org のリリースでないところに、オープンソースの面目躍如たるものがある。 さらに、OGM動画の基礎となっていた OggDS.dll を置き換えるオープンソースの CoreVorbis.ax も特筆しなければならない。

字幕なしのMatroskaもトラックとして使えるファイル形式が多い・空間効率が良いなどの長所がある (現在、MP4やRealVideoがMUXできるようになりつつある)。 繰り返しになるが、「MKVといえばソフト字幕」と早とちりしないでほしい。

技術的にはOggのファイルフォーマットとMatroskaのフォーマットにはほとんど関係がないが、 概念上、Oggでできることはほぼ完全にMKVででき(現在、欠けているのはチャプターのサポート)、 さらにOGMでは不便だったり不可能だったいろいろなことがMKVでは実現可能になることから、 概念上(言い換えれば実際の動画を使う立場からは)「MKVはOGMのスーパーセット」と要約できる。 なおOggもオープン開発だが、OGM動画はオープン・ソースでなかった

リンク

関連記事を読む
公式サイト
Doom9's Forum

更新履歴

2003年7月24日 初版

2003年7月13日 サンプル例を追加

2003年7月8日 追加例をふたたび削除、整理。旧版

テキスト版省パケ版XML版



faireal.net このウェブサイトは、まもなく終了します。 このページに書いてあった情報は、特に断り書きがない限り、自由に使ってください(コピー、改変を含む)。 転載先においても転載自由にしてかまいません。

フィードバックは、掲示板または下記メールアドレスへ(PGP)。

webmaster@faireal.net