ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

新しい記事を投稿しました。シェアして読者に伝えましょう

×

ビットレート水増しで高画質生成編

2017-06-18 07:04

    目次に戻る


     ビットレート水増しを図る前に、ビットレート以外の任意の画質生成条件を満たしているか確認してください。

    目次
    ◎なぜビットレートを水増しするのか
    ◎水増し法1:解像度を上げる
    ◎水増し法2:エンコ殺し動画を入れる
    ◎水増し法3:GOP長を短く設定する おすすめ!

    明らかに3がスマートな解決法なので他を紹介する必要はあんまり無かった気がする……。

    ◎なぜビットレートを水増しするのか

     参考画像の他に画に変化のない解説動画や、レトロゲーのbiimシステム実況を作ったりすると、ビットレートの低い動画が完成します。通常ビットレートが低いことは高画質軽量になるということで何ら問題は無いのですが、ニコニコの現環境ではかえって低画質になってしまいます。


    出典:http://oppai.tank.jp/n2/ 
    ニコニコ動画の1.5GBの新仕様って、何が変わって、どうすればいいの?

    より、画像を一部改変


     こちらはこのブロマガ執筆時点での、ニコニコサーバーエンコードの各画質生成条件を分かりやすく示したチャートです。解像度、尺と共にビットレートが画質を決める要素になっており、先に示したような低ビットレートになりやすい動画では、1000kbpsはおろか500kbpsすら下回ってしまうことがあります。生成動画のビットレートが低いのはあまり問題になりませんが、解像度を640*360にまで下げられるとフルスクリーンでは画質が悪い状態での視聴を強いられます
     1000kbpsを超えれば720pでそれなりの解像度の動画が生成されるので、なんとかこの水準までビットレートを水増ししたいところです。


    ◎水増し法1:解像度を上げる
     高解像度にすればビットレートが上がります。ただ、例えば1280*720で動画を作ってAVI形式で書き出し、再度AviUtlで読み込んでサイズを拡大して1920*1080で書き出しという手法では、AviUtlで拡大した分おそらく画質が悪くなるでしょう。ビットレートもさほど上がらないと思います。なので旧仕様の時に1920*1080で動画を作っていて、今は1280*720で作っていても再度1920*1080に戻す準備がある方でないとこの方法は難しいかもしれません。
     特にキャラ素材が顕著ですが、元の大きさが小さくて1920*1080の環境では使用に耐えない素材もあります


     旧ゆっくりは1080pでの使用が難しい素材のひとつ。この大きさに拡大すると特に魔理沙が背景に比べてボケてしまう。現在分家で使用している霊夢と魔理沙は新ゆっくりではなく、独自にwaifu2xというソフトで地道に大きくしたもの。ものすごく手間がかかる。最新版では簡単に全素材を高解像度化可能。

     また、解像度を上げるとAviUtlでのエンコード、ニコニコサーバーでのエンコード共に所要時間が伸びます。x264guiExからQSVやNVEncのプラグインに乗り換えてエンコードの高速化を図れば負担は軽減しますが、ニコニコサーバーエンコはどうしようもありません。


    ◎水増し法2:エンコ殺し動画を入れる
     mp4で圧縮しにくい動画を末尾に加えることで容量を増大させ、ビットレートを稼ぎます。


     拡張編集タイムライン上で右クリック、メディアオブジェクトの追加から図形を選択し、上図のように設定します。
     この動画は解像度1280*720の場合10秒で約18MBの容量になります(あくまで自環境での結果)。20分の動画なら40秒この動画を加えることで500kbpsビットレートを増大させ、多くの動画で高画質を生成させることが可能です。AVI形式での書き出しよりオブジェクトのエクスポート機能を使って保存しておくと良いでしょう。
     ただし大変目に悪いので視聴者が見てしまわないよう、本編が終わった後この動画を入れる前に十分な間と注意書きを入れることを推奨します。ジャンプスクリプトで飛ばすこともできますが、スクリプトの動作環境はほぼPCのみです。
     実際の容量は各自作ってみて確認するのが一番ですが、容量が時間に比例し、ビットレートが予測しやすいのが長所です。

    Tips:mp4で圧縮しにくい動画とは
     mp4が動画を圧縮する手法は、1フレームの中だけで見れば基本的にJPEGと同じ手法で情報を圧縮します。そのため隣り合う部分の色の差が大きい画像は効率的に圧縮できず、再現性を高めようとすると大きな情報量が必要になってしまいます。
     またフレーム間では動き予測と呼ばれる、フレーム間の差分のみを保存する手法で情報を圧縮しているため、前後のフレームで画像が異なっているほど圧縮効率が下がります。これを満たす動画としてまず考えられるのはカラーの砂嵐なのですが、それほど細かい画像にしてしまうと再現性を下げる方を選択してしまうようです。


    ◎水増し法3:GOP長を短く設定する

     mp4では以下の3種類のフレームを使い分け、情報の圧縮を図っています。

    Iフレーム(Intra-coded Frame)
     フレームの情報を全て保存。キーフレームとも。
    Pフレーム(Predicted Frame)
     前のフレームからの差分が保存されている
    Bフレーム(Bi-directional Predicted Frame)
     前・後ろ・もしくは両方のフレームとの差分が保存されている

     Iフレームが何フレームに1回挿入されるのかを表すのがGOP長、もしくはキーフレーム間隔の上限というパラメーターです。x264guiExなどのニコニコ用プリセットではGOP長がFPS*10、すなわち最長で10秒に1回Iフレームが挿入される設定になっています。各フレームの情報量の差はGOP長を3にしてみるとよくわかります。


     下から7行目からの3行が各フレームの生成数と容量です。各フレームの生成数がほぼ同じなので、この動画の場合PフレームはIフレームの1.7%、BフレームはIフレームの0.3%の容量しか無いことがわかります(※この動画は舞台裏のテンプレのみを書き出した動画であり、前後のフレームがほぼ全く同じだったため、情報量に極端な差が出ています)。よってGOP長を短くすることで容量の大きいIフレームを不必要に生成させ、容量を肥大化させられることがわかります。
     問題は動画によって各種フレームの情報量が動画によって異なるため、GOP長の変更による動画の容量増大率が予想できないことです。舞台裏のテンプレートのみを24分弱流した実験動画では、
    GOP長300:132MB、595kbps
    GOP長30:495MB、2806kbps
    GOP長3:2.03GB、12412kbps
    という結果になりました。
     ただ容量が予測できないとはいえ、1000kbpsを超える容量から投稿上限の1.5GBまではかなり余裕があるので、FPSと同値に設定してみれば上手くいくんじゃないかとは思います。

     GOP長は以下で設定します。

    x264guiExではフレームタブ内のキーフレーム間隔の上限


    QSVでは動画エンコードタブ内のGOP長


    NVEncでは動画エンコードタブ内のGOP長


    目次に戻る


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。