LoginSignup
2
2

More than 1 year has passed since last update.

ffmpegで高品質なDVD-Video規格の動画を作成(一括変換用バッチファイルもあるよ)

Posted at

環境:Windows10 64bit
参考:ffmpeg で DVD-VIDEO用 ファイルをいい感じに生成する方法
ffmpegのスレッド数指定ですが、昨今16スレッドのCPUなどもザラにあるため、スレッド数を指定せずffmpegに任せたほうが良いんじゃないかという気がします。

それからこちらのサイトによるとこのままDVDStyler等のオーサリングソフトに投げ入れても家電で再生できない可能性があるらしいので、こちらのサイトの通り、生成した動画をセグメント付きVOBファイルに変えてから扱うといいと思います。

とりあえずffmpeg

それぞれ、コマンドと、ドラッグ&ドロップで一括変換するバッチファイル用のスクリプトを掲載。
コマンドの場合はコマンドプロンプト等にコピペしてファイル名のところを書き換え
バッチの場合はメモ帳かなんかにコピペして、適当な名前.batで保存し、保存したbatファイルに動画をドラッグ&ドロップすると変換された動画が生成されます。
**動画のアスペクト比が16:9じゃないときは各自16:9の部分を書き換えてください。

1Pass VBRのとき

コマンド

ffmpeg -i "元動画のファイル名" -c:v mpeg2video -vf "scale=720:480,format=yuv420p,fps=30000/1001" -vsync 1 -target ntsc-dvd -aspect 16:9 -b:v 6000k -maxrate 9000k "出力ファイル名.mpg"

一括変換バッチ

cd /d %~dp1
:loop
if "%~1" == "" goto end

ffmpeg -i %1 -c:v mpeg2video -vf "scale=720:480,format=yuv420p,fps=30000/1001" -vsync 1 -target ntsc-dvd -aspect 16:9 -b:v 6000k -maxrate 9000k "%~dpn1.mpg"

shift
goto loop
:end

2Pass VBRのとき

コマンド

ffmpeg -i "元動画のファイル名" -c:v mpeg2video -pass 1 -vf "scale=720:480,format=yuv420p,fps=30000/1001" -vsync 1 -target ntsc-dvd -aspect 16:9 "出力ファイル名.mpg" && ffmpeg -y -i "元動画のファイル名" -c:v mpeg2video -pass 2 -vf "scale=720:480,format=yuv420p,fps=30000/1001" -vsync 1 -target ntsc-dvd -aspect 16:9 -b:v 6000k -maxrate 9000k "出力ファイル名.mpg"

一括変換バッチ

cd /d %~dp1
:loop
if "%~1" == "" goto end

ffmpeg -i %1 -c:v mpeg2video -pass 1 -vf "scale=720:480,format=yuv420p,fps=30000/1001" -vsync 1 -target ntsc-dvd -aspect 16:9 "~dpn1.mpg" && ffmpeg -y -i %1 -c:v mpeg2video -pass 2 -vf "scale=720:480,format=yuv420p,fps=30000/1001" -vsync 1 -target ntsc-dvd -aspect 16:9 -b:v 6000k -maxrate 9000k "~dpn1.mpg"

shift
goto loop
:end

解説

2Passエンコード

VBRとは可変ビットレートのこと。動きが多いところにたくさんデータを使い、動きの少ないところでデータ量を減らす。
2Passエンコードを行うと、1回目で動画の解析を行ってから2回目でエンコードするので、2倍の時間がかかるが効率よく圧縮できる。DVDは4.7GBと容量が限られているためおすすめする。

-target ntsc-dvd

NTSCとは日本で使われている映像放送規格。
このオプションは、このサイトによると
-c:v mpeg2video -c:a ac3 -f dvd -s 720x480 -r 30000/1001 -pix_fmt yuv420p -g 18 -b:v 6000000 -maxrate 9000000 -minrate 0 -bufsize 1835008 -packetsize 2048 -muxrate 10080000 -b:a 448000 -ar 48000
と同じらしい。これはDVDの規格に沿ったものである。一部書いたコマンドと被ってる部分があるが、自分で書いた方の記述が優先されるようなのでOK。

fps=30000/1001-vsync 1

一応target ntsc-dvdの中でもフレームレートを29.97fps(=30000/1001fps、DVDの規格)にするために-r 30000/1001としているが、これだと音ズレすることが多々あるので、fps=30000/1001として強制的に29.97fpsにし、-vsync 1でズレないように補強している。

2pass目にだけ存在する-y

-yは、同名のファイルが存在したときに強制的に上書きするオプション。だって、1pass目でできたファイル、いらねえじゃん。
大体どのサイトでも1Pass目はNULLとかそういう名前にして保存しているが、これが後で残るので、だったら出力ファイル名と同じに名前にしておけば2Pass目でついでに消してくれるよね、という構文になっている。

さいごに

どうせffmpegのことだしどうせエラー吐くんで自分で修正してください。頑張れ!
あとDVDに焼くときは必ず生成したmpgファイルをこちらのサイトの通りにセグメント付きVOBファイルに変換してから作業してください。そのうちVOB生成まで一通りバッチファイルで自動化するつもり。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2