2011/03/06

mkvをffmpegでmpegに

昨年買ったRegza Z1のDLNAクライアント機能を利用してパソコン上の動画を見るために、ubuntu上で MediatombをDLNAサーバーとして動かしている。

おまけ程度しかないRegzaの動画再生能力はDVD仕様の動画のみとのこと。いろんなコンテナに入った、いろんなコーデックの動画たちは ffmpegという魔法のプログラムで簡単に単一のフォーマットに変換してくれる。といってもコマンドライン上で操作しなきゃならない上に膨大なオプションパラメータ。素人の手に負えるものではない。

で、それらのフロントエンドが沢山あって、有名どころだと携帯動画変換君(Macなら携帯動画変換ちゃん)。しかし、ウチにはWindowsがネイティブに動くマシンが既にない。ubuntu + VirtualBoxか、MacOSX + Parallelsのみ。エミュレータでやることでもないし、いつも使ってるMacbookも使えない。そこで、ubuntuでのフロントエンドを探すと、WinFFというのが簡単にできそうでだった。早速使用したところ、ほとんど何の苦労もなくDVD仕様のmpeg動画が出来上がった。mediatombのディレクトリに突っ込むと茶の間のテレビで再生できた。

ここまでは去年の話。そして、最近研究目的で見つけてきたmkvファイルをいつも通りにWinFFに放り込む。出来上がったmpegを再生すると英語音声しか出てこない。VLCで再生してみると音声トラック(ストリームというらしい)が複数あり、ストリームを切り替えることで日本語でも再生できた。これは変換時にどのストリームを変換するのか指定しなければいけないということか、と、早速WinFFのオプション項目を見ると、それらしいものはない。唯一使えそうなのが「Additional Command Line Parameters (Advanced)」。ffmpegのパラメータを直接指定するしかなさそうである。

最初に試したのは -alang jpn -vlang jpn で、オーディオとビデオを日本語に指定するのではないかと思われるオプション。早速指定して変換してみる。8時間後に出来上がった動画は英語音声だった。この指定は外れ。デフォルトのストリームを指定するだけなのかもしれない。次に試したのが -map。最初、使い方が分からなかったのだが、ここで使い方を学んだ。学んだなんて大げさなもんじゃないけど。

今回の mkvのストリーム構成は以下のとおり。
Stream #0.0: Video: h264, yuv420p, 1332x720, PAR 1:1 DAR 37:20, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0.1(eng): Audio: ac3, 44100 Hz, 5.1, s16, 192 kb/s
Metadata:
  title           : English Dolby Surround 5.1ch AC3
Stream #0.2(jpn): Audio: ac3, 48000 Hz, 5.1, s16, 192 kb/s
Metadata:
  title           : Japanese Dolby Surround 5.1ch AC3
Stream #0.3(eng): Audio: aac, 48000 Hz, stereo, s16
Metadata:
  title           : English 2ch AAC
Stream #0.4(jpn): Audio: ac3, 48000 Hz, stereo, s16, 448 kb/s
Metadata:
  title           : Japanese 2ch AC3
Stream #0.5(eng): Subtitle: 0x0000
ストリームの0と2を指定すればいいので WinFFのAdditional Command Lineには
-map 0.0 -map 0.2
と指定した。
10時間後、茶の間のRegzaで再生。おぉ、日本語だ。ヨカッタヨカッタ

0 件のコメント:

色々な画像ファイル形式をhtmlに埋め込む(PHP)

画像をhtmlに埋め込む際、単一の場合は img/src、複数の拡張子を指定すると img/source/srcsetに展開してくれる便利関数。また、単一拡張子のみが指定されている場合は、ブラウザのサポート状況に応じ、avifやwebpの拡張子を持つ同名のファイルがある場合は[a...