エンコードソフトにMeGUIを使用した事例です。
MP4(H264/AVC+HE-AAC) の記事では、バッチプログラムで自動化していますが、本記事ではMeGUI本来の使い方で、GUI操作を使用した解説になります。
また、スペース不足により、「エンコード -MeGUI-」で記載できなかった内容も含めています。
ここでは、AVISynthスクリプトの作成から、AutoEncode機能で、映像エンコード、音声エンコード、映像と音声の合成(コンテナ化)を行うJobを一括で登録し、実行するところまでを記載しています。
なお、映像エンコード、音声エンコードで使用するプリセットの作成方法については、MeGUI(x264nl)の導入と設定の記事を参考ください。
付録として、入力ファイルの情報を表示する方法も記載していますので参考にしてください。
以下は、Windowsムービーメーカで動画ファイルの出力までが終了していることを前提に記載しています。
1.使用ソフトウェアおよびコーデック
項目 | ソフトウェア名 | バージョン | 備考 |
---|---|---|---|
エンコードソフト | MeGUI(x264nl) | Ver.0.3.1.1006 |
2.準備
(1)入力ファイル
項目 | フォルダパス名 | ファイル名 | 備考 |
---|---|---|---|
動画ファイル | D:wmv | test.wmv | ムービーメーカからの出力ファイル |
音声ファイル | |||
画像ファイル | test.jpg | チャット欄を隠すための画像 (リネ2壁紙) |
MeGUIのバージョンが最新版ではないので現在とは異なる部分も多いと思いますので参考程度です。
(2)MeGUIプリセット
映像エンコード用(zoome高画質)
【Main】タブ
【RC and ME】タブ
【Advanced】タブ
音声エンコード用(zoome)
AviSynth(zomme_overlay)
2.エンコード
(1)Avisynthスクリプトの作成
①AviSynth creatorの【Options】タグ
・Tools⇒AVS Createrを選択し、【Options】タグの各項目に適切な設定をします。
・Video Inputに 動画ファイルを設定します(この場合は、D:wmvtest.wmv)
・Avisynth profile は zoome_overlayを選択します
・Resizeをチェックし、希望のサイズになるよう調整します(ここでは、halfサイズの640×512)
(アスペクト比を維持するのであれば、Suggest Resolutionにチェックをいれると楽です)
②【Edit】タグ
・AviSynth ファイルの内容を確認します。
・必要であれば、直接編集します。
・1行目の画像ファイル名があっているか確認します。
・画像サイズと位置調整は、あとで作業します。
・ConvertToYV12()が必要かどうかの確認は、記事最後の付録を参照してください。
※Editタグで直接編集した内容は、他のタグを表示すると消えてしまうので注意してください。
・編集が終わったら、右下のSaveをクリックします。
(2)映像エンコード設定
メイン画面とCurrentPositionウィンドウが表示されます。
・Video encodingの各項目が先ほど作成したavsファイルの内容を反映して設定されます。
・Encoder settingsがx264:zoome高画質になっていることを確認します。
(File formatがMP4でないと選択不可)
プレビュー画面
(3)オーバレイ画像の調整
①オーバレイ画像のサイズと位置の調整
・CurrentPositionウィンドウの赤色で囲んだ部分の調整をします。
・調整は、先ほど作成したtest.avsファイルをテキストエディタで直接編集します。
・上に32引き伸ばすため、1行目の268を300(268+32)に、3行目の756を724(756-32)に変更します。
※BilinearResizeで指定している値は、画像サイズです。Overlayで指定しているのは、画像の開始位置(左上の座標)です。
※縦に引き伸ばしているので縦横比が崩れますが、無視します。
・編集が終わったら、保存して終了します。
②画像サイズと位置の確認
・再度、test.avsを読込みチャット欄が隠れているかを確認します。
・うまく隠れるまで①と②を繰り返し実行します。
※チャット欄が常に同じ高さであるなら、この数値をメモしておき、AvisynthProfile(zoome_overlay)に反映しておけば次回から画像調整の作業は省略可能になります。
※チャット欄の高さを固定する場合、クリティカルエラーなどでリセットされてしまうのでMAX、MINの高さにするか、ゲーム内の他のウィンドウ(たとえばマップ)の高さを基準にすると良いと思います。
(4)音声の設定
・Audio Inputに音声ファイルを設定します。(この場合は、D:wmvtest.wmv)
※Audio Outputに出力ファイル名が自動入力されます。この名前は、Video Outputと重複していますが、今は無視します。
・Encoder settingsでNeroAAC:zoomeを選択します。(ExtensionをMP4-AACにします)
(5)JOB登録
①Automatic Encoding
・画面右下にあるAutoEncodeをクリックします。
・Automatic Encoding画面が表示されるので、各項目の内容を確認します。
・Size and BitrateはNo Target Size(use profile settings)にチェックします。
・Add additional content(audio,subs,chapters)にチェックします
・すべてよければ、Queueをクリックします
②Adaptive Muxer
・Adaptive Muxer画面が表示されるので、Muxed Outputのファイル名を調整します。
・その他、各項目を確認してGoをクリックします。
※GoをクリックするとJob Queueに登録されるだけで、実行はまだされません。
※この時点でもVideo Input と Audio Inputのファイル名が重複していますが無視します。
(6)Jobの実行
・【JOB】タブをクリックして、Jobが登録されていることを確認します。
・Outputファイルの名前が正しいことを確認します。
※ここで初めてVideo OutputとAudio Outputファイル名の重複がなくなります。
※3passと2passのファイル名が重複しているのは問題ありません。
・Startをクリックすれば上から順番にJobが実行されます。
JOB実行中画面
(7)Job完了の確認
①Statusの確認
・Statusがdoneであることを確認します。
②実行Logの確認
・【Log】タブを表示すれば、ログの内容が確認できます。
・三角マークをクリックするとさらに詳細のログを確認できます。
・job1の詳細ログを見ると、音声抽出を内部Avisynth で実行していることが分かります。
以上で、エンコード作業は終了です。
今回、1分の動画をサンプルに使用しました。おおよそ1passの処理時間は2分30秒くらいです。実際の動画の場合は、これを目安にエンコード時間の予測ができます。
3.付録
AviSynthスクリプトのDirectShowSourceフィルターで、Windows ムービーメーカで作成した動画ファイルを読込んだ場合、RGB32なのかYUY2なのかYV12なのかを調べる方法を記載します。
①AviSynthスクリプトの編集
方法は、test.avsファイルにinfo()を追加するだけで情報が表示されますので、それで確認します。
※挿入箇所がDirectShowSourceとOverlayの間だとmovie=info(movie)としなければ表示できません。
②確認
黄色文字がinfo()で表示される内容です。
赤色の下線箇所が、色空間になります。この場合、YV12であることが分かります。
そのため、ConvertToYv12は不要です。
※DirectShowSourceは、pixel_typeの指定がない場合、autoになり、YV12⇒YUY2⇒ARGB⇒RGB32⇒RGB24⇒YUV⇒RGBの順で試すようです。
※表示されるのはinfo()を挿入した箇所での情報になりますので、画像サイズは1280×1024、FPSは30となっています。
※info()が不要になったらかならず、削除してください。そのままだとエンコード後の動画ファイルにも表示されてしまいます。