2011-11-03

x264エンコードオプション個人的まとめ

これはなに?

x264 エンコードオプションにおける、自分的に調整する機会が多い項目についてまとめたものです。
人に見せるというよりむしろ自分で見るために書いています。なんだかんだでブラウザは開きっぱなしになりがちなので、自分の blog というのはメモ置き場としてかなり便利です。文ちゃんもいるし。
それと「MMD Avi出力」なんかの検索ワードでこの blog に来てる人が結構いたりするのです。意外ですね。まあそういうわけもあって書きました。でも、ここの内容がどれだけ役に立つかというと……
上記検索ワードを調べるのに統計ページを見てみたら、どういうわけか今週アメリカからのページビューが50件ほどあるのに気付きました。一体なんなのよと思ったらリファラスパムわかりやすい説明)とかいうものみたい? 皆さんもご注意を。

なお、内容については一部を除いてニコニコwikiの拡張 x264 出力(GUI)Exの設定項目とその機能についてをとっても参考にしており、特に注釈のない引用(白い字の部分が引用です)は上記ページからのものです。というか上記ページからいちいち探すのが面倒なので抜粋してまとめつつ、現在製作中の動画のエンコ設定について考えようというのが実際の所。
上記ページ内容が最新情報かどうかは未確認なので本エントリの情報についても同様になります。x264 は開発速度がけっこう速いので、情報を見つけても最新バージョンで有効なものかどうかよくわかんなかったりするんですよね。

各項は、最初に使用頻度の高いパラメータ具体値とデフォルト値等を列挙し、その後にメモが続く形になります。


用語と前提

念のため用語の定義と前提条件について軽く。この項に限らず、明らかにこれ変じゃね?ってのがあったらご一報いただけると助かります。

  • 再生負荷 … 動画を見る側にとっての「重さ」
  • エンコード時間/負荷 … 同一条件下でのエンコードに掛かる時間の多寡。って当然ですが。
  • 画質 … 一定ビットレートでの動画の「綺麗さ」。 ≒圧縮率

単に「負荷」と言った場合は再生負荷とエンコード負荷両方が該当します。

ソース次第で最適値が変わるパラメータ(どれも大なり小なりそうなんですが)についての話で、「MMDだと~」みたいな事を言ってるときはカメラをぐるぐる動かしまくったMMD動画がソースの場合だと思ってください。私はそういうのしか今のところ作ったことがないので。


プリセット

--preset [medium/slow/slowerとか]
  • medium: デフォルト値まま
  • slow: me umh, subme 8, ref 5, b-adapt 2, direct auto, rc-lookahead 50
  • slower: me umh, subme 9, ref 8, b-adapt 2, direct auto, partitions all, trellis 2, rc-lookahead 60
投稿時は slower 一択。テストエンコでは slow を用いる場合あり。medium は参考。


マクロブロックタイプ指定

  1. --8x8dct --partitions "p8x8,b8x8,i8x8,i4x4"(デフォルト)
  2. --partitions all

8x8 離散コサイン変換(8x8dct)を使用すると High Profile になる。p4x4はp8x8をつけないと効かない。i8x8は8x8dctが無ければ効かない。
16x16のマクロブロックを、場面やフレームタイプに応じてさらに細かく分割できるようにしましょうというもの。
有効にすればするほど画質が良くなるが、エンコード・再生双方の負荷も上がる。

p4x4(x4, 4x8 and 8x4 Pフレーム動き補償)は負荷の割に画質に貢献しないという説がある。ただしこの説はかなり過去のもので、現在のバージョンにおいてはおそらくそれなりの効果がある。
SD ソースにおいては p4x4 を除外した 1.を用い、HD ソースにおいては 2.を用いる事が多い。


CABAC

デフォルトで on。--no-cabac で off

画質貢献度は高いが、再生負荷もとても高い。
他のパラメータをガチガチに上げても CABAC さえ off にすれば再生負荷を抑えられるため、再生負荷を下げる必要がある場合にはまず CABAC の off を 検討する。HD では on が無難、なんだけど自作の咲夜さんがNostalogicを踊る動画では off にしてます。おかげで HD の割には軽いみたい? 代わりにビットレートを最大限まで高くしてあるんでダウンロードに時間喰いますが。


動き予測アルゴリズム

--me "umh"
デフォルト:"hex"

7と9を使う場合は要--bframes 1以上。10(QP-RD)以上を使う場合は後述の--aq-modeを1か2、--trellisを2にする必要がある。

強力なものを選ぶほどエンコード時間が延び、画質が上がる。再生負荷には影響しないはずなので、それなりに重いものを選ぶべき。というか umh(Uneven Multi-Hexagon search)一択で良い。esa 以上になるとほぼ時間の無駄。


サブピクセル動き予測

--subme 9
--subme 10
デフォルト: 7

数字が大きいほどエンコード時間が延び、画質が上がる。再生負荷には影響しないはず。
preset で指定されているのであえて指定しない事も。画質優先の場合は10。


動き検索範囲

--merange 16
--merange 24
とか。
デフォルト: 16

動き探索につかわれる predictor(予測器)の距離。
--me dia/hex の場合は 4-16
--me umh 以上の場合は 4-64 まで指定できる。

数字が大きいほどエンコード時間が延び、画質が上がる。再生負荷には影響しないはず。
ただし大きすぎると誤検出のおそれがある。最適値はソース次第で、スタッフロールやパンなどでカックンカックンする場合は誤検出が起きてるのかも。


参照距離

--ref 6
とか。
デフォルト:3

参照に使えるフレームの最大距離数。1-16
大きいほど画質が上がる可能性があるがエンコード時間が延びる。再生負荷も多分少し増えて、使用メモリが増大する。
最適値はソース次第。
MMDだとほぼ 5-6 ぐらいで頭打ち。preset のデフォルトか、6で良い。
タイトルやエンドクレジットなど、動きの少ない映像では高い ref が画質に貢献するので、そのての割合が多いソースでは高くすると良い。
flash player や視聴環境がどこまで対応しているか定かではないので、16とかバカっぽい値は避けるべき。


最大Bフレーム連続数

--bframes 5
とか。
デフォルト: 3

そのまま。1-16

圧縮率は Bフレーム > Pフレーム > Iフレーム の順に高いので、Bフレームの割合は圧縮率に影響する。
最適値はソース次第。MMDだとほぼ 5-6 ぐらいで頭打ち。
大きいほど画質が上がる可能性があるがエンコード時間が延びる。再生負荷も多分少し増えて、使用メモリが増大する。
各フレームについてはこことかここ(IDR)、GOPと早送り/巻き戻しなどについてはここ


DCT 係数の間引き処理

--no-dct-decimate で off。デフォルトは on

まるも製作所さんによると
「DCT 係数の間引き処理」というのは (中略)、非常におーざっぱに説明すると、「量子化後の DCT 係数が小さくて少なければ、量子化で消えちゃったことにしちゃおーぜ」という内容のもの。

(中略)

実際この処理を実行しないよりもした方がひじょーに、ひっじょーに僅かながら RD 性能の改善があるのだけど、個人的には flat16 matrix を使っている時以外は、常にこのオプションを有効にして、間引き処理を無効にしておいた方が良いと思う。

とのこと。低ビットレート時を除いて off が良さそう。

念のために言えば、上記引用は古い情報である。おそらく、カスタムマトリクスが大いに有効だった頃の。現在のバージョンでは MB tree や VAQ なんかが頑張ってくれるので matrix は flat が一番と言われてる。ので「flat16 matrix を使っている時以外は」という条件に反するわけではあるが、それでも off が良いみたい。


スキップMB検出

--no-fast-pskip で off。デフォルトは on

Pフレームのスキップ判定(マクロブロックタイプ・スキップ)の on / off。
off にするとスキップせずに真面目に全部計算するので速度が低下する。それによって青色の領域(空など)でブロックノイズが減る。
ソース次第だが、青い領域があるようなら off が良い。


ビットレート変動量

--qcomp 0.70
--qcomp 0.80
とか。
デフォルト:0.6

割り当てビットレートの変動許容量。
正直良くわかんないけど、数字が大きいほど量子化量(qp)の最大値と最小値の差が大きくなる事を許容する……のかなあと思います。
もちろんソース次第。
あまりがんばって調整しても大して影響ないと思う。


最大QP変動幅

--qpstep 20
デフォルト:4

連続フレーム間における量子化値(qp)の最大変動幅。1-51
大きくすると、ビットレートの急激な変動を許可することになる。なので大きい方が圧縮率は上がるだろうが大きすぎると心理的画質は下がるかも。
もちろんソース次第。
あまりがんばって調整しても大して影響ないと思う。


あとがきというかむだ話

リンクがないとあいかわらず寒色一辺倒な blog です。これからの冬、やっていけるでしょうか。見てるだけで寒くなりそう。

わざわざ x264cli でエンコしてるのは avs がそのまま使えるのと、パラメータをバッチファイルにしておけるから。なんだかんだで便利だと思います。バッチファイル。エンコの度に毎回つんでれんこの質問に答えるというのもめんどくさいというか、つんでれんこに avs を食わせるとマルチパスでコケるんで使いようがないんですね。でも今後は AviUtl 使って色調補正しようかなとか思っているのでその辺はどうなるか。

2011-09-07

自己流スフィアマップ作ってみた:補項

これはなに?

この動画の補項です。

自分で作ってみたスフィアマップについて、作り方・意図・調整などを解説する動画になってます。
このエントリは、上記動画を見た方を対象に書いています。尺などの都合から言及できなかったことや、不足であったり誤解を招くおそれがある部分について補完する目的のものです。

まずお詫び

エンドクレジットに以下の抜けがありました。すいませんでした。

フォント
GD-高速道路ゴシックJA
 ぱんかれ様

http://www.hogera.com/pcb/
タイトルに使用しました。ちょっとクセのある面白いフォントです。
高速道路の文字を再現しようという目的で作られたフォントなので、標識に使われないような文字は含まれません。なので本文用などには向かないですね。

エフェクト
WorkingFloor2
 針金P

http://harigane.at.webry.info/201010/article_1.html
ご存じ、「仕事する床」。
使いやすく面白い優良エフェクトですね。今回は、モデルのカメラから見えない部分を表示するために使用しています。

ポリゴンの詳細さとスフィアマップ

テスト表示に使用した3つのモデルのうち、ハイポリ代表の「四角」とローポリ代表の「三角」では、ポリゴン数に30倍ほどの差があります。
スフィアマップの表示(とMMD標準の陰影なども)は、モデルのポリゴン構造に大きく依存します。
そのため、動画で気付いた方もおられるでしょうが、三角の表示は四角と比べるとなめらかさに欠け、ちょっと不自然です。

ポリゴンの細かさによるスフィアマップの見え方の違いを実感して欲しいため、テストモデルにハイポリとローポリの両方を用意したんですが、テンポや尺の問題から動画では言及しませんでした。

表面下散乱

SubSurface Scattering、略してSSS、と言った方が馴染みがある方が多いかもしれないですね。自分も日本語表記は今回初めて使いました。
人間の皮膚だけでなく、結構いろんなもので起こる現象です。トマトや牛乳、大理石なんかも実はこの現象であんな風に見えてます。 どういう色が出やすいかはそれぞれ違いますが。

さて、動画で使った表面下散乱なスフィアマップですが、これも作るのは簡単です。
普通のスフィアマップを、こんなトーンカーブで調整しただけ。具体的に言うと、赤色をちょっと強くしただけですね。二次絵師さんが人物を描くときに、肌に対して赤で焼き付けしたりしますが、それを参考にしてます。
調整の注意点としては、順光と逆光のレイヤーに対して、必ずそれぞれ別々に調整してください。順光と逆光では明度のピークも最大値も異なるはずですので、それぞれ適したトーンカーブは異なります。同じカーブで調整してしまうと結構ダメな事になってしまうので気をつけてください。
ちなみに画像のカーブは調整途中のもので、このまま使うとちょっとアレです。最終的なものは撮り忘れました。

この操作は、TCSで使用した肌スフィアマップにも行っていますが、効果のほどは未知数です。TCSで使用したスフィアマップは配布中ですので興味のある方はどうぞ。

配布中のスフィアマップについて

で使ったスフィアマップを配布しているのですが、色々と未完成です。
手探り状態の頃(今も割と)に作ったものなので、あからさまに駄目な部分があります。ベスト部分はテカりすぎな上、下方からの逆光に対して肌と同じく調整すべきでした。が、肌は肌で、床が白い石で出来ているため、反射光を考慮すべきでした。瞳に至っては完全に失敗で無い方がマシです。まあそういう感じのものなので、使う場合は注意してください。

スフィアマップを作るのは誰?

動画中、シーンなどの違いによってスフィアマップは複数用意すると効果的だ、というような事を述べていますが、これはモデル作者さんが複数のスフィアマップを作成し添付するべきという意図のものでは全くありません。

演出意図という言葉を繰り返し使っている事からわかるはずですが、シーンや表現に合わせたスフィアマップを用意するのはあくまで表現者、つまり動画や静画の作者であるべきでしょう。いくつもの状況にあわせたスフィアマップをモデル作者さんが用意するのは現実的でありませんし、使われるとも限りません。
モデルに添付するものは汎用的なものだけに限って良いと思います。ですがもちろん作者さんが、特殊な状況向けのものも用意したいのであれば別です。

おまけについて

当初はもっと穏当なはずだったんですが、小悪魔モデルのボディラインがあんまり良くできていて、ううむこれは、といじくりまわしてる間にああいう事になってしまいました。不快でしたらすみません。

あのおまけは実のところ、間違い探しの様な要素があります。

解説本編の最後で、「控えめな方がよい」と言っておきながらあんなにテカテカしてるのもそうですし、コメントでも指摘してもらいましたが(ありがとうございます)、砂浜のシーンなのに下方からの照り返しを考慮していません。「暗いシーン」もかなり光りすぎてて不自然です。それらの辺りに違和感を感じて欲しくてああいう作りになっています。人間は自分で気付いた事を重要視し、忘れにくいように出来ていますから。

あのおまけを見ておかしいなと思ったり違和感を感じたりしたら、スフィアマップ(に限りませんが)を自分で作るとき、その辺りを考慮して調整してください。

そういうわけなので、あのおまけで使ったスフィアマップはあまり実用には適しません。なので配布予定はありませんのであしからず。
というか簡単なのでぜひ自分で作ってみてください、という動画を作ったつもりです。

おかりしたものについて

今回の動画でも色々とおかりしています。ありがとうございます。これら無償公開されたもの無しではもはや全く何も出来ません。

以降は、スフィアマップ とはほぼ無関係な内容となるので、興味のある方だけどうぞ。

BGM

【鏡音リン】 HighEndCity 【VOCALOID】【オリジナル】
 emon(Tes.) 様
http://www.nicovideo.jp/watch/sm13546522
本編のBGMに使用させていただきました。
軽快でお洒落な曲ですね。配布してくださっているオケを中心に使用しています。
この動画がなんとなく格好良かったりお洒落に見えたりしたとしたら、このBGMのおかげに違いありません。


【東方自作アレンジ】魔法少女達の百年祭~宵々々山【全曲マラソン】
 shinnsenyasai 様
http://www.nicovideo.jp/watch/nm8753324
おまけのBGMに使用させていただきました。
魔法少女達の百年祭は紅魔郷のExステージの道中曲ですので小悪魔とは直接の関係はありませんが、それほど無関係でもない……と思います。
おまけがあんな内容ですので、上品で速いテンポのBGMに乗せて聞いたことのないような用語と説明でたたみ掛けて、無理矢理真面目な動画っぽく見えるようにしています。


【東方自作アレンジ】 東の国の眠らない夜 何かのED風味 【東方文花帖】
 こむぎ 様
http://www.nicovideo.jp/watch/sm15234235
ED風味、ということでエンドクレジットに使用させていただきました。
東の国の眠らない夜は東方文花帖のステージ曲ですので今度こそ本当に何の関連もありませんが、ED風味な曲と言うことでチョイス。こむぎさんの曲が好きで何かに使いたいと思っていたので、完全に趣味です。


モデル・アクセサリ

バトーキン島
 バトーキン 様
http://www.nicovideo.jp/watch/sm11122007
南の島をイメージしておまけに使用させていただきました。
この動画では基本的に、MMDの出力に対しては色調補正などを行っていないんですが、このバトーキン島のみ、モデルと別出力にしてグロー等で補正しています。


小悪魔(こあ&ここぁ)
 アールビット 様

http://www.nicovideo.jp/watch/sm14912923
言うまでもなくおまけとエンドクレジットのモデルとして使用させていただきました。
東方キャラですが、紅魔郷では台詞がなく名前が未設定で、儚月抄本編では(散々大図書館のシーンがあるにもかかわらず)登場すらしないという扱いで、公式色はかなり薄い。
そのせいかどうかはわかりませんが、クセが無くとても使いやすいモデルです。
今回は水着でしたが、通常モデルの長いスカート姿が個人的にナイスです 。
性格はこぁが真面目、ここぁが無邪気で小悪魔というイメージ。


紅魔館の部屋セット
 アールビット 様

http://www.nicovideo.jp/watch/sm13490326
おまけとエンドクレジットの背景アクセサリとして使用させていただきました。
色々と使いやすい優秀なセットで、たくさんの動画で使用されています。
今回は何の工夫もなく使ってますが、特に違和感もないのがすごい。


フォント

VL P ゴシック
 鈴木大輔 様

http://vlgothic.dicey.org/
本編テキストに使用させていただきました。
クセが無く読みやすい作りで、まさにテキスト向けなフリーフォントです。
かなりの文字数を誇り、足りない文字がないという印象。


モトヤアポロ1
 株式会社モトヤ 様
http://www.motoyafont.jp/
エンドクレジットに使用させていただきました。
フォントの製造販売を行っている企業ですが、いくつかのフォントをフリーとして配布してくれています。あたりまえですがクォリティがすばらしい。
和文フォントの制作にはかなりのコストがかかりますが、それをフリーで公開しているというのはもうありがたいとしか。


ツール

GIMP 2.6.11
GNU Image Manipulation Program
 by Spencer Kimball, Peter Mattis and GIMP Development Team

http://www.gimp.org/
スフィアマップの作成に使用させていただきました。
「ソフトとか買わなくてもなんでも出来るようにしようぜ」という目的のGNUプロジェクトにおけるグラフィック編集担当。ありがたいことです。
ある意味この動画の主役なので、エンドクレジットには略称GIMPの他に正式名のGNU Image Manipulation Programも載せたわけですが、GNUをGINUとまさかのtypo。馬鹿じゃないの。ほんとすいません。


Javie 0.5.9
 らくさん 様
http://www.nicovideo.jp/watch/sm12949516
動画制作に使わせていただきました。
ニコニコ発の動画加工・編集ソフトで、GPUを使用するために非常に軽い。
エフェクトの種類に限りがあるなど、あまり凝ったことをするには向かない感じですが、プラグインの仕様も公開されていてこれからという印象。
この動画ぐらいのものを作るならとてもオススメです。とにかく軽い。


PMDエディタ ver 0.1.2.3
 極北P

スフィアマップをモデルに適用するのに使用しています。
無くてはならないものその2


MMD ver 7.39
 樋口M

説明不要ですね。この動画の全ての中心。
無くてはならないものその1


2011-05-31

MMDの書き出しとエンコードの話

前置き:どうして突然こんな話を?

ニコニコ動画にMMD動画を投稿し、MikuMikuDanceコミュニティに登録したところ、次のようなコメントを頂きました。
どうしたらこんなにきれいに出力できるの?
別に特別なことをしているわけでは無いんですが、コミュニティに参加したのは他ならぬ自分。出来れば質問には答えたい。
ですが方法がありません。投稿者コメントやマイリストは字数制限が厳しくてとても書けない。コミュニティの掲示板にももちろん書けない(新入りの初心者がいきなりエンコードについて偉そうに解説を始めたらまさしく噴飯ものでしょう)。そこでこういう場を設けてお答えすることにしました。
質問してくれた方がここにたどり着く確率はかなり低いでしょうが、そこは諦めることにします。

詳しい方ならすでにお判りでしょうが、このエントリは初心者向けの内容です。

まとめ

やたら長いエントリになってしまったので結論を先に書きます。
出来るだけキレイにエンコードするには、
  • ビットレートを可能な限り大きくする
  • Avi出力で直接H.264エンコードではなく、複数パスエンコードを行う
  • 中間Aviではロスレスコーデックを使用する
  • 色空間の変換を避ける
  • x264のエンコードオプションを詰める
という事が重要です。
当たり前の事しか書けなくてすみません 。

二つめの「Avi出力で直接H.264エンコードではなく、複数パスエンコードを行う 」についてですが、MMDからのAvi出力で直接H.264エンコードし、ニコニコ動画にUPすることも可能です。ですが当然1passエンコードなので画質では不利になります。画質を上げるためには1度ロスレスのコーデックで出力して、つんでれんこなどで複数パスのエンコードを行うことが必須です。

ということで以降の項目は興味のある方、ヒマで死にそうな方、全くわからないけどふいんきを味わっておくかという方などにしかお勧めできません。

私の手順

投稿した動画で実際に行った手順です。
  1. MMDでAvi書き出し (codec: Ut Video Codec RGB)
  2. モーションブラーをかけて中間Avi出力 (codec: Ut Video Codec YUV420)
  3. H.264で複数パスエンコード
  4. ニコニコ動画に投稿
はい。普通です。
Ut Video Codecはロスレス圧縮するフリーの動画コーデックで、Huffyuvなどと比較しても新しい分いろいろと有利なようです。MMDユーザの間ではわりとメジャーな存在みたいです。詳しくはぐぐって下さい(以降の項目についても同様。すいません)。

ここまでで、書いてあることがまるで意味不明、という方は、すいませんが私の手には負えません。まずはニコニコ動画まとめwikiなどで基礎知識を得ると良いと思います。

注意したこと

作業において注意したことは、何より劣化を避けることでした。
具体的には色空間の変換を出来るだけ避けました。
MMD出力ではRGBのまま保存し、YV12(YUV420と同じだと考えて良いようです)に変換してモーションブラーフィルタをかけYUV420のまま保存、以降変換無しでH.264でエンコードしています。

色空間には普通あまり馴染みがないと思います。なんだそりゃって方はRGB・YUVみたいな単語はとりあえず聞き流してください。いちおう最後の項で説明しています。

1. MMDでAvi書き出し (codec: Ut Video Codec RGB)

MMDでの作業が完了したらAvi書き出しをします。
MMD出力はRGB32ですが今回はアルファ情報を使わないので、Ut Video Codecを使ってRGB24で保存しました。

ファイルがまだ残っていたので確認したところ、全部で27GBほどでした。今回はシーン毎に分けて出力したので関係ありませんが、Avi2.0では最大で約32GBのファイルまでしか扱えません。大きすぎるファイルを無理に出力しても開けないので、ロスレスで保存する際は注意が必要です。

2. モーションブラーをかけて中間Avi出力 (codec: Ut Video Codec YUV420)

そぼろさんがナイスなMMEモーションブラーを配布してくださっているので、この手順は必要なくなりそうです。
 (この項が念仏か何かにしか見えない方はとりあえず無視してください)
AviSynth + MVToolsでモーションブラーをかけました。
MVToolsはYV12を扱えるので、
【Avi読み込み - YV12に変換(Rec601) - MVToolsでモーションブラー】
な処理をAviSynthスクリプトで記述し、VirtualDubで中間Avi出力しました。余分な色空間の変換を避けるためにモードはFast recompressを使用し、Ut Video Codec YUV420でエンコードしました。
今回、色空間の変換はこの1度だけのはずです。

なお上記のAviSynthスクリプトは、ググればわりとそのままズバリなものが見つかります。

3. H.264で複数パスエンコード

2.で作った中間ファイルをエンコードしてmp4ファイルにしました。
忘れてましたが文字入れと各シーンのAviファイルの連結もここでやってます。
手順としては、【全シーンを連結して文字入れ】を記述したAviSynthスクリプト(なんだこの書き方) をエンコーダに渡すだけなのでこのステップで処理しているという自覚はあんまりありません。AviSynthスクリプトはあたかもAviファイルそのものであるかのように扱えてしまうのです。

エンコードは普通はつんでれんこで良いと思います。私もそうしたかったのですが中間ファイルの連結にAviSynthを使う都合上、つんでれんこではエンコードできませんでした。
仕方がないのでx264cliとMP4Boxを使いました。
H.264の色空間は通常YV12なので、ここでも色空間の変換は発生しません。

ビットレートは重要な要素です。通常高ければ高いほどキレイになり、逆に低すぎるとどうやってもキレイにはなりません。動画の長さから逆算し、出来るだけ大きく使いたいところです。HD版ではかなりリミットに近い99.7MBにできました。
一般アカウントではビットレート・最大ファイルサイズの両方に制限が掛かるため、どうしても不利です(詳しくは例によってニコニコ動画まとめwiki参照)

エンコードオプションはニコニコ動画まとめwikiのこのページを大いに参考にしました。とても素晴らしいページでお勧めです。
HD版ではかなり重いオプションを使ったのでHighプロファイルのlevel4.0になりました。
SD版では再生負荷を出来るだけ下げたかったのでHighプロファイルのままCABACをオフにしました。levelは3.1でした。コメントによるとそこそこ軽いようで上手くいったみたいです。

なお、通常エンコードのパス数は2passか、それで目標ビットレートに達しない場合にさらに+1回つまり3passで良いと思います。それ以降は画質は向上しないというのが通説のようです。
なのですが今回、HD版のエンコードではかなり重いエンコード設定を指定したのでとても待ちきれず、バッチファイルで自動化して寝ている間にエンコードさせました。
このバッチファイル、止めるまで延々Nth passエンコードを繰り返すというシロモノで、朝起きたときには19回目をやっていました。つまりHD版では19passのエンコードを行ったわけで、ひょっとするとそれにより綺麗になっていた……のかもしれません。(同じぐらいの確率で3passと変わらないか、逆に悪くなっているおそれもあります)
ちなみにSD版は同じようなバッチファイルを使い、用事を済ませる間エンコードさせてたら、5passほどやってました。

あとはニコニコ動画にUPしただけです。結論についてはすでに述べた「まとめ」の項をご覧下さい。

補足説明:色空間

ニコニコ動画に関する限りでは、色空間=動画のフォーマットだと理解してだいたい問題ありません。詳しい解説はWikipediaなどにお任せするとして、ざっと説明すると
  • RGB32(RGBA) - 1ピクセルにつき32bit使って記憶する。アルファ情報有り
  • RGB24(RGB) - 1ピクセルにつき24bit使って記憶する
  • YUV422(YUY2) - 1ピクセルにつき16bit使って記憶する 
  • YV12(YUV420) - 1ピクセルにつき12bit使って記憶する
という違いがあります。

それぞれ異なった方法で色情報を符号化しており、相互変換では劣化が発生します。 この劣化はあまり問題にならない程度に小さいのですが、それでも劣化であることは確かです。動画CodecやAviUtl・VirtualDubなどでは、必要な場合自動的に色空間を変換するため、知らない間に劣化が発生している場合があります。色空間と各ソフトを良く理解して正しい手順で作業すれば劣化を避けられます。

MMDの出力はRGB32なので、本当にロスレスで保存したい場合にはRGB32を使う必要があります。(アルファが要らない場合はRGB24)
Ut Video Codecはそれぞれ各色空間に対応したものが用意されているので、正しく選択することが重要です。(まちがえると色空間の変換が発生し、劣化します)

H.264は通常YV12を扱うので、MMD動画をニコニコ動画にUPする場合は、YV12への変換が1度は必要になります。

 YV12とYUV420は、普通は同じものと考えて良いようで、YV12とYUV420間の変換では劣化は発生しません。詳しい人にこんなことを言うと「違うわバカヤロー」と怒られそうですが、MMDとニコニコ動画で遊ぶ限りではYV12=YUV420と思って良さそうです。

以上、簡単に述べましたが、私も必要に駆られて調べただけなので不十分な内容になっていると思います。動画の色空間についてはネット上にたくさんの日本語の情報があるのでググれば簡単に調べられます。TVのアナログ放送をPCで録画する際の情報が多いようで、色空間とその変換については多くの人が苦労されているようですね。