魔道学研究所 2010年12月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

h264+AAC動画の作り方part4 画質向上時の細かい内部設定について

フィルタとかAMVロゴの取り方とかそういえば書いてなかったけどいいや次書こう
zoomeで検索すると似たようなのがあるけどあっちは文字数オーバーになってるのでちょっとだけ詳しいです


デフォルトの状態はプリセットで 速度Medium チューニングnone プロファイルHigh、マルチパス-nth passを選択しておりビットレート設定は出来ているとします。



・単純に全体的な画質を上げたい。(ここはwiki等に良く書かれている基本的な事項とかその解説です)

単純に元動画に忠実に画質を改善します。誰が見ても綺麗になったように見えます。
基本的にエンコードもデコード負荷も増えます。

-マクロブロックタブ
--マクロブロックタイプの指定から4x4.4x8and8x4Pフレーム動き補償をonにします。
Pフレームの動き補償の精度を上げることによって画質向上をはかります。エンコード負荷もデコード負荷もそこそこ増えますが多少綺麗になります。
あくまで多少ですがこれを付けることによって見てくれが悪くなることはまずありません(良く付けない方が良いと聞きますがちゃんと効果はあります。)

--Bフレーム設定、Bフレームの最大連続数を増やす。
通常の設定ではPフレームが入る場所にサイズの小さめなBフレームを挿入しやすくなる為画質が向上します。エンコード負荷をあまり増やさずにかなり効果がありますが4以上で再生に問題が発生する可能性がありますが大体の環境なら大丈夫です。
※Bフレームの設定参照距離以上には設定できません。
ただしintelのGPU(corei5のGPU機能)やradeonの一部のバージョンのドライバを入れている方は再生時画面がおかしくなる可能性があるため微妙です。また3より大きいとiphone4では再生できません(andoroid系統はしらないです。それと3Gはもともとチューニングbaserineが無いと動かないです)

--フレーム設定より適応的Bフレーム挿入を簡易から完全にします。
エンコードデコード負荷とも多少上がりますがBフレームの最大連続数を増やすならこちらを設定しましょう。増やさないにしても設定していた方が良いです。
重さと比較すると充分効果があります。画質に関係する部分も重さもhex→umh程度です。…重さはもうちょっと軽いかな

--Bフレームの設定参照距離を増やす。
Bフレームを何フレーム前から参照出来るかについての設定です。4~6程度は上げると重さに対して比較的大きく画質を改善できますがそれ以上は効果が薄くなっていきます。上げた場合エンコード、デコード負荷が上がり、特に動き予測アルゴリズムをesa以上にした場合エンコードが非常に重くなります。
またこちらもBフレームの最大連続数と同じように4以上だとiphoneじゃ再生できません。

-詳細タブ
--動き予測より動き予測アルゴリズムをHexagonal SearchからUneven Multi-Hexagonにします。負荷はかなり大きくなりますがそれ相応の効果はあります。
またExhaustive SearchやHadamard Exhaustive Searchにする事でさらに効果を得られますが重さに対する画質向上度が相応ではないので設定するなら他の設定を全て実行したが物足りないという様なときにするべきです。ただ後者の設定も軽くなりつつあります
ぶっちゃけtesaは3年程度前に比べ1/3程度の軽さになっているようです。スペックが充分ならtesaでも充分走れます

--動き予測よりサブピクセル制度を上げます。上げる場合は制限の少ない9がオススメです。10にした場合trellisが強制onになり重くなります。
動きが本当に少ない動画(紙芝居動画みたいなのでズームと横スライドするぐらい)なら下げることによって軽くなる上に画質が悪くなることはほぼありません

--解像度が高い動画限定ですがベクトル探索範囲を増やすことで画質が上がる可能性があります。
上げすぎた場合esa以上だと殺人的に重くなる可能性があります。
動き予測よりベクトル探索範囲の数値を変更します。640x480の動画なら16以上にする必要はありません。また横1280の動画では24あれば充分です(フルHDはガンガン上げても効果あるけどものすごく遅くなる可能性があるので出来れば32程度に止めておいた方がよいかもです)



やるのであれば動き予測アルゴリズムをumhに、適応的Bフレーム挿入を有効、Bフレームの参照距離を増やす、Bフレーム連続数を増やす、サブピクセル精度を上げる、マクロブロックタイプ全てにチェック、(余裕があるなら動き予測アルゴリズムのesa、tesa)の順で設定すると良いと思います

ちなみにここに上げた全てを最高の設定にするとプリセットplaceboに近くなりますがあちらには時間がかかるが効果はほぼ皆無な設定(slow-firstpassとno-fast-pskip辺り)が入ってるのでそれよりはずっと軽くなるはずです。それでもesaやtesaを選択した場合は十分重いですが
まあ…tesaで出力するぐらいこだわるならこれらも設定して良いかもしれませんがね
因みにこの2つは自分で設定した限りは出力ログのavgの数値の向上はみられませんでした。


--rc-lookaheadの設定をする。
コマンド追加で設定できます。プリセットではfastで30 midiumで40 slowで50 slowerとplaceboで60に設定されています。
これの数値を弄ることでmbtreetで調節できるフレームの範囲を増やしてビットレートの緩急が付けやすくなります。
数値を上げることによりIフレームの品質が上がりBフレームの品質が下がりますが全体的に見ればプラスです。たぶん
20上げる程度じゃほとんど速度には関係ないのでtesaとか使う人はおまじない程度にどうぞ。
解説してるところが非常に少ないから自信もっていえないです。ただ低ビットレート(100kbps以下)でのエンコードの場合は効果が実感できるほど綺麗になることは確認しました。


それでどれぐらい設定が効果があって遅くなるか試してみました
http://circle.zoome.jp/es2x/media/4/


・全体的な見た目を綺麗にしたい

画質を上げると言うより視覚的に綺麗に見せる方法です。重さはそれほど変わらずなかなか大きい効果を上げることが可能です。

--ノイズ除去フィルタを閾値を絞ってかけ目立たない部分を削る
元々ノイズがある動画はもちろんですがビットレート制限のある動画共有サイトではかなり有効です。
ノイズがある動画ではノイズにより発生する無駄な容量が少なくなり無い動画でもディティールをごまかすことで動画サイズが小さく出来ます。具体的には付属のノイズ除去フィルタであれば閾値18程度ならどれだけ強くかけても分からないぐらいなのでかけることによりかなりビットレートが節約できます。ビットレートが十分な場合は不要です。
分からないぐらいなら出来るだけ強くかけてよいです。

--静止画などで無駄に割り振られている部分を節約する
レート設定より粒子化の限度、QPの下限を19~21度に上げます。そしてQP変動幅の最大を10以上(30程度でも良い)にします特にビットレート変動量を低くしている場合には効果が高く静止画等で無駄にビットレートを使うことを抑制出来ます。十分にビットレートがある場合でも18程度にはしておいて構わないと思います。
静止画とかなら14程度にしましょう。

--輪郭を強調させる。
3Dの動画より2Dの動画で効果があります。詳細タブより詳細設定、デブロックフィルタを強度-1閾値-1に設定します。これは簡単に言えばシャープ化です。破錠している動画を補正する目的でないならばフィルタで設定するより効果的に綺麗に見えます。それ以上は上げる必要は薄いです。静止画なら-2-2等で更に際だたせることも可能ですが動いている動画だととげとげしく感じる可能性があります。

--2D動画限定ですがPsy-RDのRDOを0.00にします。これは動画の細かい部分を補正する物ですが3Dでの使用に最適化されているので2Dではビットレートを喰う割りにはそれほど綺麗になりません。ビットレートが高い場合は0.50程度にしておくといいです

--同じくPsy-RDよりTrellisを上げます。こちらもRDOと同じように動画の細かい部分を補正します。効果はVAQに近いですがかなり重いです。そのうえ出力時のQPは悪くなりますがかけることにより見てくれが改善します。部分的なノイズが目立つ場合はもちろん特に問題が無い場合でも0.30程度かけると画質は改善したように見えるはずです。

--fpsを下げる。
最終手段に近いですが1秒間あたりのフレーム数を削減して画質を向上させます。
効果は言わずもがな動画全体の総ビットレート量を下げ1枚あたりに使える容量を増やします。
他の設定をしたがどうしてもという場合に使うと良いですがせいぜい12~15fpsは無いとどうしても不自然に見えるのでそのデメリットを差し引いても画質を向上させたい場合にやるべきです。またエンコードにかかる時間が少なくするのでその分だけフィルタや出力設定を設定する事が出来ます。
設定は読み込み時又は設定→フレームレートの変更で出来ます。ただし元の動画のfpsに対して出力時のfpsが整数で(2や3等)割れないと不自然に見える可能性があります。特に出力時のfpsが低くなるほど目立ちます。

-音声のビットレートを下げる
これも最終手段に近いですがlc-aacでエンコードしている動画をhe-aac(aac-sbr)またはhe-aacv2(aac-sbr+ps)にします。16~24kbpsならhe-aacv2 32kbps~64kbpsならhe-aac 80kbps以上にするならaac-lcのままが良いです。中間を書いてないビットレート帯は効果が薄いので非推奨です。
zoomeでは必要ないと思いますがニコニコ動画では有効です。lcからheにまたhev2にする事によってキンキンする上に音域が狭くなったりしますがどうしても動画のビットレートを上げたい場合には有効です。
極限まで画質を良くするよりは音声に割いてくれた方が個人的には見やすいですがね…
設定する場合には平均ビットレートの割りには聞こえが良くするためにクオリティベースのvbrにする事を勧めます。元々aacはcbr出力では無いですがもっと顕著になります。
nero aacencを使ってる場合はx264gui.iniをメモ帳等で開きこのような感じで追加しましょう。
preset_41=" AAC-HEv2 16kbps"
preset_41_prm="-hev2 -q 0.05"
preset_41_2pass=1
-qの後の数値を大きくすることによって圧縮率が変更されます。クオリティベースなので出力を何度かして調整しないと行けない可能性があります。あまりに細かく設定しても固-brで設定するのとは違い反映されません。
他には音声を分離してサンプルレートを下げる、モノラルにする等もありますが基本的なものの中には無いので自分で調べて下さい。
逆に音質を良くしたい場合ですがzoomeやニコニコではh.264+mp3などは弾かれるのでaac-lc192kbpsまでにしておきましょう。それ以上はaacでは効果がほとんど無いです。
音質だけ綺麗にして投稿したいならflv+lame mp3とかがいいです。
180kbps辺りからaacよりmp3の方が綺麗だしね
ただmp3にする場合でも256kbps以上は人間の耳じゃ分からないです。
oggで投稿したいって言っても現状知ってる動画共有サイトで投稿出来るサイトはないようなので諦めて下さい


・部分的(1枚の画像の中ではなく特定の場面)に汚い動画を改善する

--一部場面でブロックノイズやモスキートノイズが激しく発生する
レート設定よりビットレート、ビットレート変動量を増やします。ただし動きが少ない場面では汚くなりますが通常時でも65-70以上にはしておくべきです。
大体70-80で改善しないようならばビットレート不足です。他の部分の劣化も激しくなっていると思います。
粒子化の限度よりQPの下限と同時に設定することにより静止画などによる無駄遣いを大幅に抑えることが出来ます。

--暗い場面が続き画質を向上させたい
元々x264は暗闇に弱いです。Adaptive Quantization、VAQの数値を上げます。ずっと暗い場面であれば1.3程度にあげれば画質は改善するはずです。
VAQは元々高周波部にビットレートを優先的に与えるという設定なので上げた場合は部分的にモスキートノイズが発生する可能性あるのでずっと暗い場面が続く場合以外はそれほど高くする必要はないです。
またビットレートが足りない場合はVAQ自体掛けない方がいいと言われていますが圧倒的に足りずノイズが大量に発生する場合はかけたほうが綺麗に見えます。


・ニコニコ動画用に綺麗にリサイズしたい
このリサイズフィルタいいよ!http://nilpo.sitemix.jp/aviutl-plugin/
ダウンコンバートではSpline36が綺麗です。小さな文字が潰れる場合はBicubicなんかもいいかも
どうしても小さい文字が潰れてしまう場合は1度1024x768等上げるサイズの倍にアップコンバートして512x384等に小さくすることが有効な場合もあります。(このフィルタは名前が変えられるので2つ入れた場合でもわかりやすいです。)


・なんか投稿したら色の間がすごく汚くなってる、特に赤。
フラッシュプレイヤーの仕様です。
--colormatrix smpte170mや--colormatrix bt709のコマンドを追加しても改善されません。
一応横1280以上にすれば改善します。
原因はフラッシュプレイヤーです。html5のプレイヤーだと普通に見えます。アップデート繰り返せば直るかもね

・ビットレートが圧倒的に足りない動画を作成する場合
↑の設定を全て試したがどうしてもノイズが新規に大量に発生してしまう場合の設定です。主に100kbps以下の動画に対しての設定です。こういう馬鹿するとき用http://www.nicovideo.jp/mylist/21696693

--warpshrpフィルタ(http://mksoft.hp.infoseek.co.jp/aviutl.html
)をかける。
warpsharpフィルタをdepth140 bump140程度で掛けます。わざと動画を破錠させることにより高周波部を減らし見てくれを改善します。blueは9に近くcubicは0に近くするのが良いです。
--Trellisを強く掛ける。
Psy-RDよりTrellisを2.0程度掛けます。これによりのっぺりしますがノイズは減るはずです。あと輪郭が若干ぼやけます。
--GUIの出力設定よりデブロックフィルタを掛ける
強度-1閾-1もしくは強度+1閾+1程度掛けます。どちらでもいいです。ビットレートが足りないのに何を…という感じですがノイズが削減します。おそらく画像1枚1枚の容量が削減されているためです。

まあ…こんなものかなぁ…なんかここが違うとかあればどうぞです。
スポンサーサイト
プロフィール

めいたむ

Author:めいたむ
過去に書いたことが半年後には黒歴史あると思います。

カテゴリ
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カウントァー!
ブログ内検索
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。