Aviutilとx264出力(GUI)Exを使用したエンコード設定




Aviutilとx264出力(GUI)Exプラグインを使用してYoutubeにアップロードする際のエンコード設定について自分の備忘録がてら記事にしたいと思います。なお使用した録画データはPC版ダークソウル3。動画の元の解像度は720pですが、以下のエンコード設定で実行した場合に動画をYutubeにアップロードした際の再エンコードで画質の大幅な低下、ブロックノイズの発生を抑えることができませんが、720pから1080pにアップスケールすることでYoutube側の再エンコード時のビットレートの割当量を増やすことで画質の低下、ブロックノイズの発生を大幅に抑えることができそうです。



image4_20170505084412935.png

「設定」→「サイズの変更」→「1920x1080」に設定してアップスケール。

※元の動画が1080pの場合はこの工程は不要。その場合は「なし」のまま。




image1_201705050714247a5.png



「x264」タブ

エンコード方式:自動マルチパス
nul出力:チェックON
目標ビットレート:15000
プリセットのロード速度:Veryslow
プロファイル:high


プリセットのロード速度
ultrafastからplaceboまであり、下に行くほどエンコード時の精度が上がり画質の向上が見込めるようです。placeboとVeryslowの画質の差はエンコード時間の割りに軽微と思われるためエンコード時間を度外視して画質優先の場合Veryslowでよさそうです。

目標ビットレート


Youtubeにアップロードする動画の推奨エンコード設定


HDR 動画をアップロードする際の推奨映像ビットレート

映像ビットレート、標準フレームレート(24、25、30)
1080p 10 Mbps
720p 6.5 Mbps

映像ビットレート、高フレームレート(48、50、60)
1080p 15 Mbps
720p 9.5 Mbps

フレームレートが30かそれ以上でYoutube側で再エンコード時に割り当てられるビットレートが決まります。可能な限りフレームレート60もしくは48以上で動画をキャプチャーする設定にすることを推奨。1080p60フレームの場合は15000bps(15Mbps)で設定

※ちなみに当方の環境では720pでPCゲームを録画していますが、設定するビットレートを720pの60フレームの上限である9.5 Mbpsを指定した場合ブロックノイズが動きの早いシーンで散見され全体的に画質の低下が著しいです。ブロックノイズの原因は指定した解像度に対して割り当てているビットレートが不足している場合に起こりやすいとのことですが、録画データは720pでも出力サイズを1080pにアップスケールすることで15 Mbpsのビットレートを割り当てられることから画質の低下、ブロックノイズの発生を大幅に軽減できるようです。アップスケールによる画質の低下よりYoutubeアップロード時の再エンコード時のビットレートの割り当て量の増加によるメリットのほうが圧倒的に上回るようです。また720pで15Mbpsや50Mbpsのビットレートを指定しても現象は変わりませんでした。

録画したデータよりも1段階ほどアップスケールしてYoutubeアップロード時の再エンコード時のビットレートの割り当て量を増やしたほうが全体的に良い画質は良好であり、ブロックノイズの発生を大幅に抑えることが可能と思われます。



image2_20170505074228841.png



「レート・QP制御」タブ



AQ(適応的QP)

モード:AutoVAQ
AQ強さ:1.50

mbtreeレート制御
レート制御先行探査フレーム数:60

Psy-Rd(視角心理最適化)
RDO:1.00
trellis:0.00


mb-treeレート制御

(時間軸で映像を観察して、後々重要になりそうな部分の品質を上げておき、どうでもよさそうなところは品質を下げる。特に動きが少なくて平板な部分が多い動画につかうと、ビットレートを大幅に節約でき、その分全体的な品質の向上が見込める。とのことですが録画したPCゲームはダークソウル3ですがmb-treeレート制御をONにすると動きの早い箇所、エフェクトの激しい箇所、敵の色が黒色でディテールが潰れがちなシーンでブロックノイズが発生しやすい印象です。

AQ(適応的QP)のモードをAutoVAQにした場合VAQのビットレート配分をさらにメリハリをつけたものにするとのこと。AQ強さは範囲0~3で指定できますが、オブジェクトの動きの激しいアクションゲーム等は1.5程度で設定するとよさそうです。ブロックノイズの発生しやすい動画の場合1.5から3.0の範囲で調整して見ると良いと思います。

レート制御先行検査フレーム数はmbtree等の処理で先読みするフレームの最大数とのことですが基本的にはデフォルトの40でよいとのことですが、60位の値が画質、ブロックノイズ対策で一番しっくり来る(気がします)。



image3_20170505082217b62.png


「フレーム」タブ

動き予測

動き予測アルゴリズム:Uneven Multi-Hexagon search
サブピクセル動き予測:11(Full RD)
動き探索範囲:16
色差動き予測:ON
動き予測方式:auto
参照距離:5
混合参照:ON

動き予測アルゴリズムはDiamond SearchからHadamard Exhaustive Searchまで5種類ありDiamond Searchはエンコード速度がもっとも速いけどエンコード時の精度が低く画質は不利。Hadamard Exhaustive Searchはエンコード速度はもっとも遅いけどエンコード時の精度が最も高く画質は良いとのことですが、デフォルトのUneven Multi-Hexagon searchとHadamard Exhaustive Searchを実際にエンコードして画質やブロックノイズの出方を検証しましたが、デフォルトのUneven Multi-Hexagon searchで十分なクオリティがでます。画質やブロックノイズの発生については特筆してHadamard Exhaustive Searchが良いとも思えませんでした。両者のクオリティは誤差の範囲のような気がします。

サブピクセル動き予測は下の項目にいくほどエンコード時の精度が上がり画質が良くなりますがエンコード時間は長くなります。エンコード時間を度外視して最高画質を狙うなら11(Full RD)を指定。画質とエンコード時間の兼ね合いでデフォルト値から11(Full RD)までで調整してみると良いと思います。



動き探索範囲は動き探索につかわれる予測距離だそうですが、Uneven Multi-Hexagon searchの場合16で画質、ブロックノイズともに良好な結果が得られそうです。SD解像度で8から16、HD解像度でも24程度あればよいとのことですので、16から24の間で調整してみるとよさそうです。

動き予測方式はB-Framesの中にダイレクトというマクロブロックタイプがあった時に、そこで使うモーションベクトルの予測方式だそうですが、Autoでフレーム毎に最適な方式を選ぶとのこと。設定値をいじってエンコードしてみましたがautoでよさそうです。


このエンコード設定で7分ほどの動画をエンコードした場合に掛かる時間はi5-2500kの3.3Ghzでおよそ5時間30分ほど。i7-2600kの3.4Ghzでおよそ2時間47分ほどです。Aviutilはエンコード時にCPUがi7の場合8スレッドをフルに使用しCPU使用率は限りなく100%近く使用しますが、PCが一台の場合は寝る前にでも回しておくのがよさそうです。


エンコード終了時にPCの電源をシャットダウンやスタンバイにする。

1.「拡張x264出力(GUI)Ex」→「バッチ登録」ボタンを押す。
2.ファイル→バッチ出力→バッチ出力終了時の選択オプションでPCの電源をスタンバイやシャットダウンが選択→「開始」ボタンを押しエンコードを始める。







この記事を書くにあたり以下のサイト様を参考にさせていただきました。この場を借りてお礼を申し上げます。

拡張 x264 出力(GUI)Exの設定項目とその機能について






関連記事
スポンサーサイト