前回の記事「ゲーム動画のエンコード事情を整理」からの続き。
大量にある動画ファイルを一括でエンコードしたいときの手段をざっくりまとめます。基本的な使い方などは自分で調べてください。
前提を確認すると、こんな感じ。
- AviUtlを使うことに限界を感じて、他の選択肢を持つためにUt Video Codec Suiteで出力したものを入力動画とする。
- 出力ファイルはMP4コンテナで、映像フォーマットはH.264、音声フォーマットはAACに対応。
x264設定
これから紹介するソフトはいずれも、H.264エンコードで内部的にx264というツールを使っています。なので、H.264に関する設定は、x264に渡すパラメータそのものになり、各ソフトでの設定項目はだいたい共通することになります。
x264guiExに関する情報が充実しているので、これを参考に他のソフトでも設定ができるはずです。
ビットレート指定で画質をコントロールしようとすると、解像度やフレームレート次第で適切な値が変わってきて扱いにくいです。なので、品質(CRF)指定で調整したほうが楽ですし、実際かなり良い感じに仕上げてくれます。CRFは数値が低いほうが、高品質になります。
18~22ぐらいが高画質という話ですが、もう少し落としてもそれなりに良い画質だと思います。品質設定を変えると、画質の変化の小ささの割に、ファイルサイズに差が出るので、過剰に高品質にする必要はないでしょう。このへんはお好みで。エンコードする動画の特性(リアル調?アニメ調?)にもよるので、いくらか試してみてください。
私はCRF24でいいかなと思いました。上げるとしても22までかなぁ。
AviUtl(x264guiEx)
AviUtlではx264guiExプラグインを使うことで、H.264エンコードが可能です。
細かい設定が可能ですが、こだわりがなければ用意されたプリセットを選べば良いと思います。最新版では、ニコニコの新仕様に合わせたプリセットも用意されています。
ニコニコの最新仕様を説明するの面倒なので、参考記事だけ貼っておきます。
AviUtlは自動化のための機能が不十分で、指定フォルダ以下の動画をまとめて変換する、みたいなことが苦手です。公式にサポートしてくれたら助かるんですが、もう長いことアップデートされていないので望めません。
自動化手段が存在しないわけでもなかったので、それを自分なりにチューニングして、記事にまとめたのが「AviUtlで自動エンコード」でした。一括変換するためには、この記事を参照してください。割と面倒です。AviUtlのUIをWin32APIで無理矢理操作する手法なので、処理中に他の作業をできない不便さがあります。
また、この記事は自分用に作ったツールを公開しただけなので、プログラム関連知識のない人に優しくないです。初心者でも扱いやすいインターフェースを用意しようかとか考えましたが、良い着地点が思い浮かばず放置状態。やっぱりAviUtlの想定する利用ケースから逸脱していて無理があるんだと感じます。
一括変換目的では、下記のいずれかを満たして初めてAviUtlを採用する意味があると思います。
- どうしてもAMV4動画を扱う必要があるとき
- ニコニコ動画に投稿するため細かく設定したいとき
HandBrake
有名なエンコーダですが、**英語なので日本人には少しとっつきにくいかも。**日本語版もありますが、古いバージョンから更新されてないのでオススメしません。
独特のわかりにくいUIが気になりますが、AviUtlでエンコードするよりは素直だと思います。DVD/Blu-rayからの動画の読み込みにも対応しています。サポートする出力コンテナはMP4(M4V)とMKVのみです。
とりあえず、「Tools」→「Preferences」→「Output Files」タブを開いて、下記の設定をします。
- 入力ファイルから自動で出力先が決定するため、「Automatically name output files」にチェックを入れて、「Default Path」に出力先フォルダを指定する。
- 入力ファイル名をそのまま出力ファイル名にしたいので、「File Format」は
{source}
と入力する。 - 入力ファイル名を置換するオプション「Change case to Title Case」「Replace underscores with a space」「Remove common punctuation」のチェックは外す。
- 拡張子を固定にするため、「MP4 File Extension」を「Always Use MP4」にする。
プリセットがいくらか用意されているので、解像度と大まかな画質レベルだけ考えて扱うことができます。ただ、どのプリセットもフレームレートが30fpsになっているので、そのへんは好きなように設定変えましょう。「Framerate (FPS)」を「Same as source」にしておくと、入力ファイルと同じフレームレートで出力されます。
このように自分用設定を作るなら、デフォルトのプリセットとして登録しておくと便利です。この辺の手順はややこしいので参考サイトを貼ります。
ただ、最新版(1.0.7)だと、プリセットをAddする時にAudioとSubtitlesについては「Edit Defaults…」を押して設定を登録し直す必要があります。これをプリセット登録後に編集するには、該当のプリセットを開いている状態で、AudioまたはSubtitlesタブを開いて「Configure Defaults」を押します。なんでこんなややこしいんだ。
あまり細かい設定項目はなくシンプルですが、x264に渡すパラメータを追加するオプションも利用できます。必要に応じて設定を追加していけるっていうのはとっつきやすいのではないかなと思います。
私は「そこそこ高画質」を目指して、下記のような設定にしました。
下記の手順で一括変換できます。
- 「Open Source」から「Folder (Batch Scan)」でフォルダを選択して、動画ファイルを読み込む。(フォルダをドラッグ&ドロップしてもOK)
- 「Add to Queue」横の▼ボタンを押して、「Add All」を選択して、開いているファイルをすべてキューに登録。
- 「Start Encode」が「Start Queue」ボタンになっているので、これを押すとエンコード開始。
フォルダ単位じゃないと複数ファイルを選択できないのがやや不便。
XMedia Recode
日本語に対応しているので、英語に弱い人にはHandBrakeよりとっつきやすいかも。こちらもDVD/Blu-rayからの動画の読み込みに対応。
複数ファイルを開き(ドラッグ&ドロップが楽)、全ファイルを選択(Ctrl+A)したら、お好みのプロファイルを選択して、「リストに追加」→「エンコード」するだけ、という簡単な手順で一括変換できます。
ただ、独自設定でエンコードしようとすると、x264設定を一通り触ることになるので、急に初心者お断り感を出してきます。
基本的にプリセットを編集できないので、プロファイルを「カスタム」にしたら、あとはすべての設定をしないといけません。この設定はファイルに保存できるので、次回また流用することはできます。いや、プリセットとして保存してくれよ。
↑このへん参考になるかもです。x264guiExとだいたい同じですが、設定項目名の日本語訳が異なってたりして若干混乱します。
結局
私はHandBrakeに落ち着いています。手間は少ない方がいい。