手間のかかる字幕付き動画変換

2007年2月16日(金)

DVDの動画をW-ZERO3(VGA画面用という事)で鑑賞するために変換する。 W-ZERO3には2GBのminiSDが刺さっているので映画2〜3本ぐらいは余裕で入るし、DivX程度の動画ならストレス無く鑑賞出来る。
「未知との遭遇」を字幕付きDivX映像、「男たちのYAMATO」をXvid映像へ変換してみる。
作業は全て「WindowsXP」上にて行う。

目次
準備
「未知との遭遇」
DVDからのISOファイル吸い出し(リッピング)
ISOファイルの解凍(VOBの取り出し)
映像と音声の分離
AVIへの変換
フィルタ処理
アスペクト比の変換
字幕ファイルの設定
エンコード出力
DivXへの変換(映像)
MP3への変換(音声)

準備

以下のソフトをあらかじめ準備しておく

DVDからのリッピング:DVD Decrypter(フリー)
リソース SetupDVDDecrypter_3.5.4.0.exe(899,414 bytes)
URL http://fileforum.betanews.com/detail/DVD_Decrypter/1011845169/1

ISOファイルのマウント(フリーウェア)
リソース daemon408-139-x86.exe(1,527,192 bytes)
URL http://www.daemon-tools.cc/dtcc/download.php

映像と音声の分離:DVD2AVI(フリー)
リソース DVD2AVI_1.77.3.zip
URL http://www.divx-digest.com/software/dvd2avi.html

VFAPI Reader Codec:VFAPIConv(フリー)
リソース VFAPICodecV105.zip(486,119 bytes)
URL http://www.yks.ne.jp/~hori/VFAPICodec.html
備考 Readme.txtに従って、vifpset.batを実行してインストールする。

動画処理:VirtualDubMod(フリー)
リソース VirtualDubMod_1_5_10_2_All_inclusive.zip(1,663,518 bytes)
URL http://virtualdubmod.sourceforge.net/

字幕フィルター:VobSub(フリー)
リソース VobSub_2.23.exe(734,160 bytes)
URL http://www.divx-digest.com/software/vobsub.html
備考 VobSub_2.23.exeも実行してインストール。
VirtualDubModから呼び出せるようになる。

ビデオ コーデック
リソース DivXInstaller.exe
URL http://www.divx.com/?lang=ja

オーディオ コーデック
リソース lame-3.96.1.zip
URL http://www.rarewares.org/mp3.html

未知との遭遇

DVDからのデータ吸い出し(リッピング)

DVDをセット後、「Mode」を「ISO」に設定し、「Destination」で保存先を指定後、 「DVD->HDのアイコン」をクリックすれば吸い出しが始まる。 吸い出されたISOファイルはvlcなどで直接再生可能、DVDへの書き戻しも可能なので、 バックアップという意味ではこのままの形式で保存しておくのが安心である。

fig01 fig06
modeをISOに設定する 7.2GBのISOファイルの吸い出しに成功

ISOファイルの解凍(VOBの取り出し)

DVD Decrypterで吸い出したISO形式ファイルを解凍し、VOBファイルなどを取り出す。 尚、DVD Decrypterにて「Mode」を「File」にすればVOBで直接取り出せるのでこの作業は省略できる。 解凍ツールにはフリーウェアの extractnow やシェアウェアの WinRAR などがあるが、ISOファイルを直接マウントすれば解凍する必要は無い。 WindowsXPでは、DAEMON Tools 4.08が使用出来る。

fig49
マウントツール

映像と音声の分離

DVD2AVIの「ファイル」-「プロジェクトの保存」にて、 WinRARで解凍したVOBファイルから映像(d2v)と音声(wav)を取り出す。 処理には数分かかる。

fig09
読み込むファイルは映画の本編のみ

fig09 fig09 fig09
トラック1(英語)を選択 WAVにて出力 ドルビーデコードの指定

fig13 fig14
プロジェクトの保存で作業開始 wavとd2vファイルができる

AVIへの変換

d2vのままでは VirtualDubModで読み込めないので、更にAVIへ変換する。 処理は数秒で終わる。

fig16 fig15
VFAPIConvを実行 参照形式を確認して実行

fig17
aviファイルが作成

フィルタ処理

VirtualDubModを起動しmain_d2v_vfapi.aviを読み込む。
[Video]-[Filter]にてフィルターを設定し、映像と音声のコーデックを指定して出力。

※これらの処理には TMPGEncAviUtl などの動画処理ソフトが使えるが、字幕処理をするためVirtualDubModを使用する。

今回使用したフィルターは、次の3つのみ。
1.インターレス解除(deinterlace)
2.VGAへのクロップとアスペクト変換(resize)
3.字幕(日本語と英語)(VobSub)

fig37
使用したフィルタは4つのみ

アスペクト比の変換

W-ZERO3のVGA画面(640x480)で再生するためアスペクト比を調整する。 調整にはresizeとcropを使用する。

まず vlc にて画像キャプチャを取り、どのような解像度で画像が出力されているかを見る。
画像キャプチャは「ビデオ」-「スナップショット」にて行える。 キャプチャ画像は「一般ビデオ設定」の「ビデオスナップショット」に設定したフォルダに保存される。

fig27 fig28
VLCでスナップショットを撮る スナップショットの保存先を指定

キャプチャした画像を調べると、画像サイズは[853x480](アスペクト比が16:9)、 そのうち映像部分は(およそ)[837x352]となっており、 映画スクリーンの[2.39:1]とほぼ同じであることがわかる。 DVD規格の解像度は[720x480]なので、fig40の様なイメージで映像が入っている。

fig39 fig40
VLCでキャプチャ[837x352] 【fig40】DVDの中では[704x352]

つまり、この[837x356]の[2.39:1]の映像部分をクロップして[640x480]の画面内に埋め込めば良いことになる。
しかし、ここに[2.39:1]の映像を埋め込むと上下が妙に空いた(MOTTAINAI)事になってしまう。 そこで、左右の映像をカットして[640x480]を有効に使うのだが、どこまでカットするか、又は全くカットしないかは好みの分かれるところである。

映像部分は[704x356] [2.39:1]へ変換
左右を全くカットしない fig40 fig41
左右を5%づつカット。今回これを採用。 fig42 fig43
左右を10%づつカット fig44 fig45

まず、「Filters」の「Cropping...」にて映像の無い部分を取り除く。
X方向を両側から44ドットを指定し632ドットに(720-44x2)。
Y方向を両側から64ドットを指定し352ドットに(480-64x2)。

fig46
クロップ処理

クロックした[632x352]を[640x300]にアスペクトを変換する。 (X方向は299ではなく300にした)

fig38
アスペクト変換

字幕ファイルの吸い出し

字幕の情報は、VirtualDubModにてAVIファイルを読み込んだ後、 「Video」-「Filters...」からVobSubを呼び出して作成する。

fig18 fig19 fig20
main_d2v_vfapi.aviを読み込む 「Video」-「Filters...」から VTS_01_0.IFOを開く

IFOファイルを開くと、字幕の変換ウィンドウが現れるので、「OK」を押して字幕情報を作成する。 処理には数分かかる。

fig21
字幕変換ウィンドウ

処理が終わると、VTS_01_0.idxとVTS_01_0.subファイルが作成されるので、 VTS_01_0.idxを開く。

fig22 fig23
idxとsubファイルが作成された idxを開く

ここで、ようやく字幕フィルターのウィンドウが開く。 プルダウンメニューで字幕が選択できるので「01-Japanese」を選ぶ。 字幕の位置は「赤の領域」を好みに応じてマウスで設定する。 今回は字幕が映像にかぶらないようにY方向に40下げた。

fig24 fig25
字幕フィルターのウィンドウ 字幕の位置を少し下に下げる

同様の手順で英語の字幕をスクリーンの上に挿入する。

fig36
英語の字幕はスケールを少し小さくした

「OK」にて設定を終え、メイン画面にて字幕が入っていることを確認する。

fig26
メイン画面での字幕の確認

エンコード出力

映像はDivX(quantizer=8)、音声はMP3(128kbps)を使用する。

DivXへの変換(映像)

24fpsへの変換。「deinterlace」との関係は未調査。

fig29
24fpsへ変換

MP3への変換(音声)

設定は、音声ファイル(WAV)を[Streams]-[Stream list]に追加する。

fig30
Stream listへの追加

追加したWAVに対して圧縮設定(Compression)を行う。 コーデックには「lame MP3」を適用。

fig31
Stream listへの追加

fig32
lame MP3を選択

出力

[Range]にて最初の760フレームはカットする。

fig33
スタート位置を720フレームに

[Save As]にて保存。 この時、[]にチェックを入れておくと、ジョブリストに登録される。 [File]-[Job control...]にてジョブの制御が可能となり、ジョブ処理終了後のシャットダウン制御も出来る。 が、字幕フィルタがあるとうまくジョブが走らない。

fig34 fig35
エンコード開始 ジョブのシャットダウン指定

作成したファイルは約380MB。PentiumM760で約2時間。 ファイル名をDivXq10.avi(DivXのクォンタイザー10でエンコード)に変更しておく。

fig48
作成されたファイル

DivXへの変換

画像調整及びインターフェース
リソース TMPGEnc-2.524.63.181-Free.zip
URL http://www.tmpgenc.net/ja/j_main.html
ビデオ コーデック
リソース DivXInstaller.exe
URL http://www.divx.com/?lang=ja
オーディオ コーデック
リソース lame-3.96.1.zip
URL http://www.rarewares.org/mp3.html

DVD2AVIで作成した映像(d2v)と音声(wav)をTMPGEnc(Free版)で読み込む (映像が読み込めない場合、DVD2AVIを起動させてみる)。
ソース範囲、画像クリップ、インターレース解除、フィルタなどの設定を 好みに応じて行い、AVI出力にてDivXやH.264などの外部コーデックに引き渡す。 TMPGEnc内蔵のコーデックは使用しない。

fig03
フリー版のTMPGEnc

fig04
DivXとlameにてAVI出力を行う

DivXの1パス-品質保存は可変ビットレートでのエンコードを意味する。 ターゲットクォンタイザー(quantizer)は画質を決めるパラメータで 好みに応じて行う。値を大きくするほど「ブロックノイズ」が目立つようになる 代わりにファイルサイズが小さくなる。

fig05
DivXの設定画面

真夏の連続エンコード24時間では、室温30℃に対しCPU(PentiumM-760)温度が 73℃まで上昇したが、ハングアップはしていなかった。

その他コーデック

いわゆるH264なので高画質である。 ソースのみ公開されているので、自分でビルドする(Linuxでは普通だが)か、ビルド済みのものを適当に探してインストールする。 x264のquantizerはDivXなどとは全くの別物。 W-ZERO3のTCPMP 0.72RC1では再生できない。

ビデオ コーデック
リソース x264-sse2-rev614.lzh (242,906 bytes)
URL http://developers.videolan.org/x264.html

fig47
x264のインストール

▲ページの先頭へ ▲ホームへ

Y.Ikeuchi