動画丸投げで x264 エンコードをするメモ

 混沌やら栄光の動画を撮ってエンコード & アップロードしているけど、録画開始と停止のタイミングは自分で決め打ちしているので、不要部分のカットなどの編集を一切行っていない。そういった場合、いちいち AviUtl を開いて動画を読み込ませ、ぽちぽちメニューをクリックしていくのも面倒だなと。
 そこで、録画した AVI ファイルをドラッグ&ドロップしてやるだけで x264 エンコした動画と AAC な音声を MP4 のコンテナに突っ込むという方法を取る事にしたので、その際のメモとか公開用セッティングをぺたりと貼っておく。

スポンサーリンク
前提条件

 任意の録画ソフトにて、生の AVI として録画する。録画ソフト側で余計なエンコードは行わない。
 不要な部分をカットしたり、テロップ入れは行わない。むしろ今回の場合は編集不可。編集したい場合は AviUtl を用いたエンコ推奨。

事前準備

 1. 使用するソフト
  Handbrake CLI 版
  CLI はコマンドラインで用いる物。設定決め打ちで同じ作業をやらせるなら、断然効率が良い。

 2. 作業場所とエンコード後のフォルダの準備
  適当に D ドライブへ「encode」ってフォルダを作成しておく。

 3. ダウンロードした CLI 版 Handbrake を D:\encode に解凍する。
  エンコードした MP4 ファイルの出力先としても用いるフォルダにした。

 4. バッチファイルを用意する
  Handbrake がある位置やエンコードオプションを予め指定したバッチファイル (拡張子 .bat) を作成し、D:\encode へ「aion_encode.bat」なんて名前で保存しておく。
  バッチファイルの内容は次の通り。コピペで ok。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
:: プログラムパスの定義
set HB="d:\encode\HandBrakeCLI.exe"
:: エンコードオプション
set OPT=-f mp4 -e x264 --x264-preset=fast --x264-tune=film --h264-profile=high --h264-level="4.1" -q 26 -r 24 -a 1 -E fdk_aac -6 auto -R auto -w 1920 -l 1080 --crop 0:0:0:0 -U

:: 出力パス
set TSTMP="d:\encode"
 
if /i not "%~x1"==".avi" goto error
 
%HB% %OPT% -i %1 -o "%TSTMP%\%~n1.mp4"
 
goto end
 
:error
echo "Input file error %1"
 
:end
pause

* 2014/03/11 19:00 -q オプションの値が小さすぎたので 26 に変更。

準備完了の図

 用意するファイル 2 つを D:\encode に入れるだけなので、エクスプローラーで見ると次の様になっている。
0311_enc

エンコードの実行

 AION に限ったことではないけど、Bandicam や Fraps やら任意のソフトで録画した AVI ファイルを aion_encode.bat にドラッグ&ドロップしてやるだけで良い。
 プロンプトが開いてエンコード進捗が表示される。エンコードが完了したら任意のキーを押すと窓が閉じて終了する。シンプルに簡単なエンコード(*゚Д゚)b
0311_enc2
 エンコード後のファイルは同じく D:\encode に保存されるようにしてある。他のフォルダにしたい場合、出力パスの環境変数を任意のフォルダに変更すれば良い。
 尚、今回書いたバッチファイルのセッティングでは、サンプルとして録画した 969MB の AVI ファイルが、エンコード後には 22.3MB になった。
 あと、CPU は AMD FX-8350 @4.3GHz でエンコード速度は平均 33fps 前後になった。この速度は CPU の演算性能に左右される。動画自体は 24fps なので、24fps 以上のエンコード速度があれば動画の時間の長さよりも早いエンコード時間で完了する。
 また、CPU に結構な負荷が掛かるので発熱によるフリーズやらには要注意。

エンコードオプションの説明
-f mp4 -e x264 --x264-preset=fast --x264-tune=film --h264-profile=high
 --h264-level="4.1" -q 22 -r 24 -a 1 -E fdk_aac -6 auto -R auto -w 1920 -l 1080 --crop 0:0:0:0 -U

 -f mp4 : コンテナの指定。MP4 に入れる。
 -e x264 : エンコーダに x264 を指定
 –x264-preset=fast : より詳細なエンコードオプションのプリセットを用いる。fast とする事で軽いエンコになるが画質はボチボチ。
 –x264-tune=film : film と言う事で実写向けのチューンをさせる。他に適当な物が思いつかなかったのでこれ。
 –h264-profile=high / –h264-level=”4.1″ : 1920×1080 でエンコードするので取り敢えずこれらをチョイス。main 4.1 でも良いかな。
 -q 22 : 画質に直結するオプションで、画質設定になる。値を小さくするほど高画質になるがファイルサイズも肥大する。
 -r 24 : フレームレートを 24fps に落としてやる。30fps が良いなら 30 にする。
 -a 1 -E fdk_aac : オーディオトラック 1 の音声を fdk_aac でエンコードする。
 -w 1920 -l 1080 : 動画のサイズを指定。1920×1080 いわゆる FullHD に。そこまで大きいのはいらないなら、1280×720 も良い。
 –crop 0:0:0:0 : クロップせず、入力側の画面全てをエンコード対象とする。
 -U : DXVA2 ハードウェアデコードを用いる。不要なら外す。

スポンサーリンク