魔道学研究所 動画エンコード ニコニコ動画 2011ねん9がつごう

スポンサーサイト

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

動画エンコード ニコニコ動画 2011ねん9がつごう

映画などを保存用にエンコするより制限プレイの方が楽しいよね。x264での(大雑把な)画質はcrf依存だから容量気にしなければあんまり(ryだし…
なので比率的にはほとんど動画共有サイト用にしかエンコしたこと無いのですが最近まで動画を上げていたzoomeが潰れてしまいyoutubeも再エンコを必ずされてしまうので自分の画質で登録できるのはニコニコ動画しか現在はありません。
というわけで書いていくのですがニコニコ動画での設定のは出来るだけごまかして綺麗に見せるという事が主で。元のままを保持しようとする方が綺麗に見えるわけでは無いという事を念頭に置いておいて下さい。
なぜならば使用できる容量が制限されている為忠実性を重視出来るほどのビットレートが無いからです。(HD動画であれば3分程度の動画でも少々厳しい程度)


導入
aviutlとx264guiex→昔書いたやつ※ここではx264guiexはver0.29を入れて下さいと書かれていますが1.xx以降の最新版を入れて貰って構いません。設定する項目は同じです。aviutlとx264guiexが入ってる人はかまいません。

追加で入れるもの
QuickTime→http://www.apple.com/jp/quicktime/download/※iTunesが入ってる方は不必要です。

QTaac.enc→http://tmkk.pv.land.to/qtaacenc/ ページの中ほどにあるDownloadの↓のqtaacenc-xx.zipよりどうぞ

YAMB→http://yamb.unite-video.com/download.html動画と音声を結合する。動画2つを選択して動画部と音声部を結合したり音声部だけ入れ替えることも可能。要mp4boxの指定

Nl means light for GPU→http://nilposoft.info/aviutl-plugin/※グラフィックボードを導入してない人は不要というか無謀

あると便利
Media info→長いので略出力時の設定が見られます。(設定が多い場合は表示からHTMLが見やすいです。)

bitrate viwer→http://www.winhoros.de/docs/bitrate-viewer/download.htmlビットレート変動が見られます

qtaacというのは音声エンコーダです。neroより取り扱いが面倒くさいですがaac-lcでの音質は格段に良いです。(heはSBRの出来が良くないのか同程度)因みにiTunesのエンコーダでもありqtaac.encはそれを使うためのフロントエンドといえます。

qtaac.encあばばあ
指定は右側でqtaac.encを選び先ほどダウンロードした物を指定するだけです。場合によってNeroと両方を使っていきましょう。(後述)

しかしこのqtaacには問題があり。勝手に音声周波数を入力時以下に下げてしまいます。(True vbrだと110 ~と書かれている物以下だと強制的に32khz以下になる)便利といえば便利なのですが目標のビットレートから大きく外れることが多く。heになると容量こそ良いが音声がカスれてしまうという事になりかねません。

x264guiex.iniをメモ帳で開き。(右クリックよりプログラムで開く→規定のプログラムを選択→メモ帳)
この部分に --samplerate keep と追加しましょう。
サンプリングレートキープ。
これ以上は長くなるので音声の項目でお話しします。


動画のエンコードについて(リサイズ)

ニコニコ動画にはプレイヤーが2種類あり。4:3動画向けの512x384プレイヤーと16:9動画向けの640x384プレイヤーです。
後者は実際は16:10の動画までドットバイドットで表示できるので縦横比を決める際は参考にして下さい。

まず動画をエンコードする作業には正確なアスペクト比を計算してリサイズを行うことが必要になります。ニコニコ動画のプレイヤーのリサイズにはおそらくAreaAverageと言われる高速だけど綺麗ではない方式でのリサイズが行われており(あくまで多分です確証はないです)動画プレイヤーより大きな動画は縮小され汚く見えます。
当然全画面視聴を前提とした動画では別ですがプレイヤーより大きな動画だと圧縮率は大幅に下がるのにリサイズで更に汚くなるという2重苦となります。


動画をaviutlで開いてみて↑のバーにあるタイトルの後に(ooo,ooo)と書かれている数字を見ましょう。
これが640x480だとか1280x720だとか4:3や16:9に割り切れる数字なら良いのですが世の中にはそういう動画ばかりではなく5:4だとか場合によって8:7だったり2.5:1(これは海外の映画だけど)だったりします
その場合に無理に4:3などにリサイズしてしまうと人の顔が縦長や横長になってしまったり基本的に汚くなってしまいます。

動画をリサイズする際にはまずプレイヤの種類を2種類の内アスペクト比が近い方を選び。
縦と横の内均等な割合でリサイズした場合どちらが先に制限になるかを計算します。
制限一杯にリサイズ後。足りない部分を黒ベタ追加フィルタで足して512x384又は640x360又は640x384にしましょう

リサイズ方式としてはサイズを下げる場合はSpline36
(プレイヤサイズの倍数であればAreaAverageやGaussianの方がより忠実に、よりシャープにリサイズ可能です。)
サイズを上げる場合も同様でかまいませんが、Splineではかなりボケてしまうので場合によりBicubicやGaussianを使いましょう。ただしSplineの方が出力サイズ的に小さくなるので容量が足りない(大体SSIMでIフレームが25を越える程度)ならSplineを使いましょう。
また無理に16の倍数にこだわるより正確なアスペクト比を指定した方が綺麗にエンコードできます。



動画のエンコードについて(フィルタ)

フィルタには大きく分けて2つの目的で使うことになります。
1つ目は綺麗ではない動画を人間の目で見てより綺麗だと見せる目的。
2つ目は動画全体で人間の目では重要視しない部分を間引きエンコード後の容量を下げる目的。

前者にはシャープ化やノイズ除去、色調の調整が、後者には複雑な部分へのボカし等が入ります。

まあシャープ化はアナログソースで強いエッジ強調をしたい等でないとそれほど有用ではありませんし色調補正も本当にどうしようも無い場合に使う程度で良いですがノイズ除去というのはフィルタの中で非常に大きなウェイトを占めます(ニコニコ動画に上げる場合)

なぜならばノイズというものは見て汚いというだけではなく容量食いでもあるためです。汚いノイズを再現するために余計にビットレートが取られるというのは嫌ですよね。完全な可逆ソースのゲーム動画以外はBDソースであれどんな動画でも閾値を下げて軽くかけておくと良いです。
目安としては付属のノイズ除去フィルタ閾値 8 強さ192程度。
ニコニコ動画用では閾値24~32 強さと範囲はお好み程度かけておけば本当に細かい部分だけがボカされ容量比の画質向上に大きく役に立ちます。

因みにアナログ放送などでの非常に多いノイズは先ほど入れたNl meansフィルタが非常に効果的です。
処理は重く、出力設定やCPUに比べGPUがショボいとここがボトルネックとなり非常に出力速度が落ちてしまいます。
また時間範囲へのノイズ除去(動きに対するノイズ除去)は非常に重いので空間範囲、輝度分散を弄りノイズがそれほど気にならない程度に設定してやりましょう。(ボケ過ぎる場合は適当なところで妥協しましょう)


出力の設定(x264側)

動画出力には基本的にどのような配分でビットレートを使うか。エンコードするときどれだけ負荷をかけて良いか。再生するときどれだけ負荷をかけても良いか。といった設定をしていきます。
x264設定2011-9月
設定していくのはこの灰色で塗りつぶされていない部分です。
塗りつぶされた部分は明らかに変える必要がないものやニコニコ動画では意味が無いもの等です。
タブ毎に説明していきます。

x264タブ
ここでは出力する際のビットレートを決めます。許される限り最大限に設定しましょう。
(エコノミー回避は音声と合計で312kbpsまで 一般会員は656kbpsまで プレミアムは無制限だが増やしすぎると鯖の関係で止まり止まりになるので1500kbps程度まで。ただしコンテナサイズが入るので60fpsなら10kbps 30fps以下なら5kbps程度は余裕を持たせておいた方が無難です。)
必ず自動マルチパスを選びパス数は2にします。(3passは必要がほとんど無いです。やるぐらいならフレームタブ、その他にあるレート歪み最適化をAllにして2passした方が良いです。)

高速(1st pass)は1パス目に余計な設定を通さずにビットレートを予測し、2pass目に出力する方式。基本的に何の問題もありませんが2pass目に非常に重い設定にした場合はビットレートにズレ(1kbps以下)が出る可能性や配分が(本当に若干)上手くいかない可能性があります。ここをOFFにするくらいなら他を設定しましょう。



レート・QP制御タブ
ここではビットレートの振り分けに対する設定を行います。
重要なのはビットレート変動量,最小QP値,AQとPsy-RD(と一部動画はレート制御先行探査フレーム数です)

この項目を弄る上で最低限理解しといた方が良いI-P-Bフレームについて(ここに書いた奴。長いから)
あいあいさあああ
・I-Pフレーム関係数(%)
これはIフレームに対してPフレームをどれだけ綺麗にして良いかの設定。静止画に近い動画なら上げると。止まってる時が無いほど動く動画なら下げると画質は改善する…Iフレーム自体少ないので本当にプラシーボレベルの設定

・P-Bフレーム関係数(%)
これはPフレームに対してBフレームをどれだけ綺麗にして良いかの設定。基本的にBフレームは多くのPフレームからの予測となるので上げても下げても適応値から離れる場合が多く基本的に触らない方が良い。複雑な動きを繰り返す(図形が回転しながら拡大縮小を繰り返す等)だと多少上げると品質は改善するかもね。

・ビットレート変動量(%)
どれだけ動的にビットレートを動かしていくかの設定。下げると動きが少ない場所での品質を重視し上げると動きが多い場所での品質を重視する。基本的にある程度動きのある動画なら70程度が適応値だと言われている。
しかし動きが多い部分というのはいわば動画全体からすると短い時間であるのでそこへしわ寄せしてでも長い時間を占める動きが少ない部分にビットレートを割り振った方が良いほど容量が少ない場合はその限りではない。
ビットレートに余裕がある場合は90程度で良い。

・最小QP値
最高でどれだけの品質で出力しても良いかの設定。小さくするほどピーク時の品質と容量がupする。しかしながら初期設定の0になることはまず無い。ここを設定するときはビットレート変動量を小さくした場合にあまりにも容量を使いすぎないようにする時でcrf出力で見ても分からないぐらいに設定しておけば良い。またちょっと静止画が汚くなっても良いから他の部分へ割り振って欲しい場合には23程度を指定すると良い。

・最大QP値
最高でどれだけ汚いフレームを吐いて良いかの設定。死にステータス。設定の必要は全くないと言っていい

・最大QP変動幅
2フレーム間でどれだけクオリティ差を付けて良いかの設定。爆発シーンなど急激にシーンチェンジが起こった際に問われるステータス。ビットレートに余裕があれば下げて良い。無ければデフォルトで

・レート制御先行探査フレーム数
ビットレートの重み付けをどれぐらいのフレームのスパンで行っていくかの設定。live用途などでは読み込みフレーム数が増え遅延が増えるので小さくするのがデフォ。
基本的にそのままで良いがSTGなど周期的に動きが変化する物などには良い。ただし普通の動画では40でもオーバーだと言われている。(placeboでも60)
キーフレーム間隔の上限以上には設定できず最大値は250。設定した数のフレームをファーストパスで読み込むのでここを盛った上で解像度が高いとメモリを使いすぎてクラッシュする。

AQ
このオプションは1フレームの中で複雑な部分にビットレートを優先的に割り当てる処理を行います。大きくするほど顕著に、小さくするとフレーム内の差が少なくなります。
これによって得られる効果は
・小さい値を入力した場合
良い所。モスキートノイズが発生しにくくなる、同じような色を使っている部分で色むらが発生しにくくなる。
悪い所。動きが激しい場合ノイズが発生しやすくなる。同ビットレートとの比較でブロックノイズがかなり発生しやすくなる。細かい描写が再現されにくくなる。
小さい数値にするのはデジタル彩色を行ったアニメに非常に向いています。しかしデジタル彩色といえども複雑な部分が無いわけではないのでよほど余剰設定で無い限り0.2~0.3程度は設定しておいて損はないです。

・大きい値を入力した場合
良い所。ブロックノイズが発生しにくくなる、動きに強くなる、実写において質感が表現されやすくなる。
悪い所。モスキートノイズが発生しやすくなる。実際に見ている部分と強調される部分が異なる場合があり必ずしも品質が上がるわけではない。
このためスポーツや実写では上げるメリットが大きいです。また弾幕系といわれるSTGゲームでは上げると品質が大きく上がる可能性があります。

適正値は0~1.3程度でアニメで0~0.6程度実写で1程度スポーツで1.2~程度が良いと言われています。
※なんか面倒くさくなったからこの部分だけ過去に書いたの持ってきた。
Auto VAQは実写向けです。

Psy-Rd(視覚心理最適化)
・RDO
人間の目で見て重要でないと思われる場所のビットレートをそぎ落として必要だと思われる所へ割り振る設定。実写はそのままで良いがアニメでは切った方が良い。またノイズをのっぺりさせてゴマかすといった効果もある。写実性の求められる画などではかけない方が良いが実写では1程度欲しい。※ビットレート結構使います

・Trellis
エンコード時に発生した端数をどう切り落としたりするかの設定。上げるほど人間の目に適した処理を行うとされるが~0.5まで(~2.0程度までとも)が有効値だと言われている。
上げると本当に希に2次元的な動画で単色で塗られた場所が1部かけた用に表示され気になることがある。
ただしRDOに比べ使用する事へのデメリットは少なくアニメなどでも0.3程度かけた方が良い。※ビットレートは結構使うので切っても良い



フレームタブ
ここでは動き予測についての設定を主にやっていきます。本来最重要と言っていいような設定であるrefやBframeがintelのLGA1156ソケットに搭載されている糞GPU(intel社のGPU支援バグにより)あまり動かせません。基本的にどれも圧縮率にかかってきます。好みではなくwinrarなどで最高設定を選ぶように高いほど綺麗になるといったものが多いです。
因みに1156ソケのgpu使用者を無視すると圧縮率はかなり上がります。
回避方法は無いわけではないのでここでもタグで飛ばしてくれれば文句は馬鹿しか言ってこないはずです
通常サイズでの優先度はBフレーム→参照距離→アルゴリズム(umh)→サブピクセル動き予測(9まで)→マクロブロックp4x4→アルゴリズム(tesaまで)→サブピクセル動き予測(11まで)といったところ(HDサイズだとtesaは最終手段です。)

・動き予測アルゴリズム
画質は下に行くほど良く,(エンコードが)重くなっていきます。特にExautive Search以上は動き探索範囲の2乗、動画の解像度の縦横の乗算、参照距離の倍数にかかって重くなっていく為解像度の高い動画でやると死ぬほど重いです。(フルHD動画でtesa,参照距離16なんてするとi7 2600kでも3fps/sec程度になるかも)
しかしニコニコサイズで良いcpuを使っているならタイムパフォーマンスはそれほど悪い設定では無いと思います。
早く出力したい→hex そこそこ綺麗に→umh 少しでも綺麗に→tesaぐらいでどうぞ。
ただし動きが少ない動画だとtesaは重いだけであまり恩恵がありません。激しい動きがある動画でビットレートが足りない場合奥の手としてどうぞ。

・サブピクセル動き予測
サブピクセルの予測精度が上がる。普通に画質向上と捕らえて良い。
10以上だとTrellisが2に設定され重くなる。11だと処理を途中で終了しなくなる為格段に重くなる。
9程度で良いが上げた場合の効果は9→11でumh→tesaに近いがTrellisが2になるので1パス目も重くなる。
重くても綺麗にしたい人向け。効果は数パーセント重さは倍

・動き探索範囲
1つのフレーム間でどれだけの距離に対する動きを予測すればよいかの設定。
フルHDでも24で良いと言われている為512x384動画なんかは12程度に下げても問題ない。
ただしムッムッホァイやキモス。弾いっぱいな動画やレース動画なんかは16程度にしていた方が良いかもしれない。

・動き予測方式
spatialとtemporalがあるtemporalが3次元向けで重く圧縮率が高い。しかし2次元の動画でゴミのような物が目に付く場合があり,写実的なアニメなどどっちつかずの動画ではautoでどちらを使うか決めさせてもよい。基本的にはspatialを使う。ただしnoneはダメ絶対

・参照距離
いわゆるref。何フレーム前からBフレーム予測をしても良いかの設定6より上げると1156ソケで不具合。16で我がiphone4で視聴不可。どっちにしても上げると視聴者の負荷が高くなる。
重いが、重さに対する画質向上率はかなり高い。有効値は6程度と言われているがゲーム動画だと上げれば上げるほど良い物も多い。STGとかアクションでの腕の振りの周期とか

・最大連続Bフレーム数
上げると画質が大きく向上。エンコード側の負荷増加小。視聴者の負荷増加。
圧縮率の高いBフレームの最大で何枚まで連続して良いかの設定。
画質を上げる上で絶対欲しい素晴らしい設定。1156ソケを捨てるなら8~12程度まで上げてみよう。

・適応的Bフレーム挿入
完全にしておくのが良い。Bフレーム予測をよりきちんと行うようになり圧縮率が上がる。
重くなる割合に対する圧縮率の増加は大きい。

・マクロブロック
x264では動画を大きさの異なるブロックに分けて1枚絵を作っている。その中でどの大きさのブロックを使って良いかの設定。チェックを増やすと圧縮率は上がるがメタデータが増え。コンテナサイズが微増。基本的にデフォルトで良いがより品質向上を狙うならp4x4もチェックしておきたい。(優先度はそれほど高くない)

GOP関連
・シーンカット閾値
Iフレームをどれぐらいの変化が合ったときに入れた方が良いかという設定。
デフォルトで良いがアニメのOPなどシーンチェンジが多い場所を綺麗にエンコしたい等の場合は60ぐらいにしておくと良い。高くし過ぎるとビットレートが無駄になる。低くするとシークが少し効きにくくなる。

・キーフレーム間隔の下限
キーフレームを設置する際最低何フレーム開ければ良いかの設定。デフォルトでよい。

・キーフレーム間隔の設定
ニコニコ動画だとかなり大事な設定。
何フレームに1度シーク出来るIフレームを必ず挿入するかの設定。単位は1で1フレーム。普通はfpsの10倍程度を指定する。下げると圧縮率低下。上げるとシーク出来る場所が減る。例えば60fpsで600だと10秒に1回シーク出来るポイント(Iフレーム)が必ず作製される。

・インループデブロックフィルタ
画素の1つ1つに対してシャープにしたり丸めたりする目的で使う設定。
-強度でシャープに+強度で丸めたようになる。本来はプラス方向のデブロックに使われる…のか?
写実性が求められる動画や3次元の動画、リサイズによりボケてる動画などをシャープにする目的ならば-1-1程度
アニメなどのデジタル彩色を扱う際には+1+1程度にすると良い。
上げすぎるとキモくなる。
設定しないぐらいなら設定した方が良い。

・レート歪み最適化
画質の劣化が目に付きやすい場所にビットレートをどう割り振るかの設定
final MBで最終パスのみ noneでやらない。Allで全パス行う。noneは画質が落ちるが基本的にfinal MB以上は必要ない。しかしどうしてもビットレートが足りない動画では割り当てがより最適化されるのでAllにして多少でも見た目的にも節約した方が良いかもしれない。重い設定だと1パス目もかなり重くなる。



動画の設定について(その他)
どうしようもない場合にビットレートに対して綺麗に見せるテクニックです。
これらの設定をおこなっても納得のいく品質にならなかった場合。
フレームレートが高く。下げてもそこまで気にならない動画であれば(大抵は気になりますが)フレームレートを下げましょう。
半分にするとSSIMが3程度良くなるはずです。ビットレート比2割程度でしょうか。

また動画が512x384のサイズの場合はリサイズせずにニコニコ動画に上げる方法もあります。かなりボケる上にあまり綺麗にリサイズをしてくれるわけではありませんが。ノイズまみれになるよりはマシです。また処理が軽くなるので気軽に出力設定を重くできます。



音声の設定
人間は8割の情報を目で入手すると言われますが動画において残りの2割は音声になります。多分
音声は数kbpsでも音の違いが分かるため結構重要な設定といえます。

基本的にAAC-LCは qtaac.encで。AAC-heは好みで AAC-hev2は Neroで出力していく形になります。
ただ個人的にはheは高音が割れ。hev2に至ってはとても聞いていられないほどなので。2時間を超える動画で無い限りは最悪周波数を24khz程度まで下げでもheまでにした方が聞いている方にも良いと思います。
周波数を下げるメリット気にならない程度の高音を削り容量を減らすことが出来る。
周波数を下げるデメリットは高い音声を使う音楽には向かない。(会話ならまず気にならないが楽曲なら元と比べた場合劣化を感じやすいという意味)

AAC-LC
目安としては80kbps以上。(周波数を下げる場合は40kbps~)を使う場合に使用します。
TrueVBR80~~TrueVBR130~が現実的な数字です。(ABRでも同程度)
音質としては
TrueVBR80~は lame mp3 V7とV8の中間程度。NeroのQ-Based AAC 100~kbps程度
TrueVBR130~はlame mp3 V3程度。Nero Q-Based AAC 160~kbps程度です。(ソースは私の糞耳)
それ以降もNeroより音質が良い。(NeroでのQ1 400kbps程度よりqtのQ127 340kbps程度の方が音質が良いとされます)
になりとりあえずVBR80でそこそこ良い品質になってくれます。
ビットレートは下げたいがとにかくSBR独自のキンキン感が嫌な方は32khz程度で1度wavで出力してTrueVBR 80~や90~で出力すればかなり納得のいくものになる可能性は高いです。
ラジオ番組などは24khz又は22.05khzでも良いかも。

AAC-HE
目安としては70kbps以下の音声。
Neroを使うメリット
比較的ビットレートを守ってくれる。Heでもクオリティベースの出力が可。中高音が特にqtに勝る(気がする)
qtaacを使うメリット
heでも比較的丸っこい音にしてくれる。(気がする)
Q-Based AAC 65~kbps程度かneroの50kbps程度の2passがバランスが良いと思う。30kbps付近でhev2と悩む場合は32khz程度に下げて試してみても良い。

AAC-Hev2
目安としては24kbps以下の音声。32kbps程度ならheと聞き比べて好きな方でmix
特殊な目的以外で使わなくて良いと思う。キンキンキンキン聞いてられないです。周波数を下げると逆効果。
ここまで下げる用途はほぼ無いと思う。

それにしても何回同じような事を書くんだろうか私は。
ニコニコ動画マイページ

コメントの投稿

非公開コメント

記事にちょっと疑問が、おまけにTrellisを調査

当記事で
>サイズを上げる場合も同様でかまいませんが、
>Splineではかなりボケてしまうので場合により
>BicubicやGaussianを使いましょう。
とありますが、
Gaussianはオーバーシュートやアンダーシュートが出ない関数?らしいので
個人的には
シャープさでいえば
Gaussianより
Lanczos3のほうが説明としては適切なのではと思いました

また、
>基本的にAAC-LCは qtaac.encで。
とありますが、
数値上はqtaac.encは音質がいいといわれてますが
個人的に聞いてみたところ
AAC-LCの128k以下はneroのほうが音が聞きやすいと思います
neroaacは音がくっきりシャープで少しシャリる印象で
qtaac.encは音が安定してるが、濁るように感じます
(あくまでも個人的ですので参考程度になればうれしいです)

おまけにですが、
Trellisを2.00ほど入れると、アニメでははっきりしました
実写だとのっぺりしました
アニメではモスキートノイズが激減しました
ですが、グラデーションのかかってるシーン等の
ブロックノイズが増えました
(ソースにもよるかと思いますが・・・)
モスキートノイズに困っている場合はあげるべきだと思います
プロフィール

めいたむ

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

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

この人とブロともになる

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