H.264エンコード・バッチファイル

x264のパラメーター変更したので再公開です。

FEZ-SNSで公開してる動画共有サイト向けのH.264エンコードバッチファイルをココでも公開します。

ゲーム動画の画質と容量の妥協点はこんなもんかな?という設定になっています。

<用意する物>
・Avisynth (Ver.2.5.8にて動作確認)
http://sourceforge.net/projects/avisynth2/
・x264 (r1145にて動作確認)
http://x264.nl/
・Nero AAC Codec (neroAacEnc)
http://www.nero.com/jpn/technologies-aac-codec.html
・WAVI
http://sourceforge.net/projects/wavi-avi2wav/
・MP4box
http://kurtnoise.free.fr/index.php?dir=mp4tools/
・hqdn3d
http://akuvian.org/src/avisynth/hqdn3d/

<インストール方法>
・Avisynthは事前にインストールしておいてください
・用意したファイルは以下のディレクトリ構成で配置してください
\H264encoder
+ \mp4tools
| + mp4box.exe
| + neroAacEnc.exe
| + wavi.exe
| + x264.exe
| + hqdn3d.dll
|
+ h264enc.bat

<エンコード方法>
エンコードしたいファイルをh264enc.batに放り込んでください。
それだけです。
複数のファイルを纏めてドラッグすれば順番にエンコードしてくれます。

<ビットレートとか解像度とかの設定>
h264enc.bat を直接編集してください。

< バッチファイル>
以下がバッチファイルの中身なので、h264enc.batの中身にコピペしてください。

@echo off

rem  Video Bitrate  単位は Kbps
set bitrate_v=1500
rem  Audio Bitrate  単位は bps
set bitrate_a=128000

rem 解像度の設定  リサイズ処理をしない場合は、元ファイルのサイズを設定
rem 元のファイルのアスペクト比に従って設定してください。
set width=640
set height=480

rem 補正のパラメタはAviUtlの色調補正とほぼ互換、 0を基準に±256
rem ガンマ補正   暗く (-)----0----(+) 明るく  補正しない場合は 0を設定
rem 捕捉
rem アマレココでは、ゲーム内のガンマ設定が反映された状態で撮影されてるようです。
rem dxtoryでは、ゲーム内のガンマ設定は未反映な状態で撮影されてるようです。
set gamma=20

rem 上下の黒帯の幅 (ニコニコでは上下左右に黒帯を追加して4:3または16:9にしてください)
rem 黒帯処理を行う場合は、このファイルの57,58行目の設定を確認してください。
set top=32
set bottom=32
set left=0
set right=0

rem 環境変数の設定
set cmddrv=%~d0
set cmddir=%~p0
set toolsdir=%cmddrv%%cmddir%mp4tools
set TemporaryFile=%TEMP%\mp4enc_tmp
set InputAVS=%TEMP%\mp4enc.avs

rem エンコードパラメータの設定
set x264cmd= --preset slow

rem ファイル名の設定
:loop
if "%~1"=="" goto end
set InputFile=%~1
set OutputFile=%~dpn1.mp4

rem Avisynthスクリプトの出力
echo LoadPlugin("%toolsdir%\hqdn3d.dll") > "%InputAVS%"
echo AviSource ( "%InputFile%" ) >> "%InputAVS%"
echo ConvertToYV12()  >> "%InputAVS%"
echo Spline64Resize (%width%,%height%)  >> "%InputAVS%"
echo ColorYUV(gamma_y=%gamma% )   >> "%InputAVS%"
echo hqdn3d(2) >> "%InputAVS%"
rem 黒枠追加を行う場合は ↓のremを外してください。
rem echo AddBorders( %left%, %top%, %right%, %bottom%) >> "%InputAVS%"

echo %InputFile% のエンコードを開始します。

rem 音声の抽出
echo 音声の抽出を開始します。
"%toolsdir%\wavi" "%InputAVS%"  "%TemporaryFile%.wav"
rem AACエンコード  profileはbitrateから自動設定
echo 音声のエンコードを開始します。
"%toolsdir%\neroAacEnc" -br %bitrate_a% -if "%TemporaryFile%.wav" -of "%TemporaryFile%.aac"
del "%TemporaryFile%.wav"

rem H.264エンコード
echo H.264エンコード 1st passを開始します。
"%toolsdir%\x264.exe" --pass 1 --stats "%TemporaryFile%" -B %bitrate_v%  %x264cmd% --output NUL "%InputAVS%"
echo H.264エンコード 2nd passを開始します。
"%toolsdir%\x264.exe" --pass 2 --stats "%TemporaryFile%" -B %bitrate_v%  %x264cmd% --output "%TemporaryFile%.mp4" "%InputAVS%"

rem mux処理
echo 映像と音声のMUXを開始します。
"%toolsdir%\MP4Box" -add "%TemporaryFile%.mp4" -add "%TemporaryFile%.aac" "%OutputFile%"
echo %OutputFile% を作成しました。

del "%TemporaryFile%.aac"
del "%TemporaryFile%.mp4"
del ""%InputAVS%""

shift
goto loop
:end
rem シャットダウンしたい場合は、↓の rem を消す
rem shutdown -s
pause