DVDをブルーレイで採用しているAVC(H.264)で圧縮する方法について記載します。ここで説明する内容はプロテクトがかかっていないDVDを圧縮する方法ですのでご注意ください。
操作説明は Windows10 64bit を想定しています。
動画の規格
DVDは1995年に規格化され「PlayStation2」に搭載され当時話題になりました。動画コーデックにはMPEG2が採用されています。
mp4で使用しているAVC(H.264)は2003年に規格化されMPEG2の約半分のファイルサイズになるとの触れ込みです。ここ10年でもっとも普及した動画形式です。
FFmpeg
FFmpegは動画と音声を変換することができるフリーウェアです。対応コーデックが多く多機能ですが、コマンドラインからのツールであるためとっつきにくいですが、使いこなせるようになればこの上なく便利になります。
公式サイトから入手します。
https://ffmpeg.org/download.html
Windows版の最新バイナリは上記公式サイトからのリンクでここにあります。
https://ffmpeg.zeranoe.com/builds/
Versionにリリース版の最新版
Architecture にWindows 64bit
Linking に static
Licence に GPL3.0
を選択してダウンロードします。
動画変換
VOBファイルを連結
DVD内のVOBファイルが動画の実体です。まず1つに連結します。
VTS01_1.VOB ~ VTS01_6.VOBの6本のファイルを結合して、VTS.VOBに出力します。
DVDによりファイル数は変動しますので、カスタマイズして使用します。
copy /b VTS_01_1.VOB+VTS_01_2.VOB+VTS_01_3.VOB+VTS_01_4.VOB+VTS_01_5.VOB+VTS_01_6.VOB VTS.VOB
変換1. 標準的な変換
映像をAVC(H.264), 音声をAACで出力するベースとなる変換です。
ffmpeg -i vts.vob -c:v libx264 -filter:v yadif -vprofile high -vlevel 3.1 -crf 22 -c:a aac output.mp4
-i vts.vob インプットファイルの指定
-c:v libx264 動画エンコーダにH.264を指定
-filter:v yadif インターレース解除の指定
-vprofile high -vlevel 3.1 H.264 プロファイルとレベルの指定。
-crf 22 品質の指定 0~51 初期23 小さいほど高画質になりファイルサイズが大きい。
output.mp4 アウトプットファイル名
変換2. 字幕を映像にオーバーレイ
字幕に映像をオーバーレイする場合です。
ffmpeg -probesize 120M -analyzeduration 120M ^
-ifo_palette VTS_01_0.IFO -i vts.vob ^
-filter_complex "[0:v]yadif[v1]; [v1][0:s]overlay[v2]" -map [v2] ^
-c:v libx264 -vprofile high -vlevel 3.1 -crf 22 ^
-map 0:a -c:a aac output.mp4
一気にややこしくなります。DVDには映像(v)とオーディオ(a)の他に字幕(s)のトラックがあります。
字幕のパレット情報を VT_01_0.IFOから読み取り、インターレース解除した映像に字幕をオーバーレイで重ねたものを H.264で変換をかけています。
オーバーレイをした場合、字幕は映像内に埋め込まれるので、字幕のOn/Offはできません。
変換3. 字幕のトラックを追加
字幕をトラックとして追加します。
ffmpeg -probesize 120M -analyzeduration 120M ^
-i vts.vob ^
-metadata:s:s:0 language=jpn -metadata:s:s:0 title="Japanese" ^
-c:v libx264 -filter:v yadif -vprofile high -vlevel 3.1 -crf 22 ^
-c:a acc ^
-c:s copy ^
output.mp4
字幕のトラックに名称を付けています。ここで作成した動画はvlcでは字幕を認識できたのですが、他のプレイヤーでは認識できずにいます。
まだ改良の余地ありです。