ffmpegでDVDをMPEGファイルに変換

社内でアシスタントからDVDをPCで再生できるようにしたい、という要望を受けたので、 DVDを入れて起動するだけのバッチファイルを作ってみた。

DVDの中身のVTS_01_1.VOB, VTS_01_2.VOBというファイルをffmpegの-iオプションに指定すれば良いのだが、 パイプ記号「|」を使ってファイル名を連結しなければならない。 ただ、バッチファイル中でパイプ記号が入ると上手く連結できないので、 試行錯誤の結果、一旦「$$」という文字を挟んで連結した後、パイプ記号に変換、という手順になった。

使い方

  1. 以下のテキストをメモ帳にコピー&ペースト
  2. 下のテキスト中でFドライブを指定している部分を各自のドライブ名に変更
  3. 拡張子をbatにして保存
  4. DVDを入れてバッチファイルを起動

原則としてバッチファイルと同じフォルダにdvd_yyyymmdd.mpegというファイルが出来上がる

@ECHO OFF
ECHO DVDから普通の動画ファイルへ変換を行います。
ECHO DVDがFドライブに入っていることを確認してください。

PAUSE

SET A=
FOR %%F IN ("F:\VIDEO_TS\VTS_01_*.VOB") DO CALL SET A=%%A%%$$%%F

SET TIME_TMP=%TIME: =0%
SET NOW=%DATE:/=%%TIME_TMP:~0,2%%TIME_TMP:~3,2%%TIME_TMP:~6,2%

SET B="%A:$$=|%"

ffmpeg -i "concat:%B:~2,-1%" -target ntsc-dvd -vcodec copy -acodec copy dvd_%NOW%.mpeg

ECHO 変換が終了しました。
ECHO 出力ファイル: %~dp0 dvd_%NOW%.mpeg

PAUSE