私的x265解説まとめ
閉じる
閉じる

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

×

私的x265解説まとめ

2015-07-05 12:00
  • 1
  • 18
・x265のパラメータを解説した記事のような物。誰も解説してくれないので自分で書いた。
・素人の解釈なので正確性の保障は有りません。
 (´ ・ω・`)<自己責任なのよー
・この記事では http://builds.x265.eu/ でビルドされたx265-64bit-8bit-2015-07-01.exe、及び http://komisar.gin.by/ でビルドされたx264.2538kMod.x86_64.exeを使用しています。
・間違いを見つけたらコメントで教えてください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・記事を読む前に
Q. 64bit、32bit、16bit、12bit、10bit、8bitの違いは?
A. 64bit・32bitは対応しているOSの事、16bit・12bit・10bit・8bitは扱う色の事。
 分からなかったら32bit・8bitを選べばいいと思う。

Q. エンコードが遅いって本当?
A. 設定にもよるけど何やらせても遅い。でもx264より画質は段違いで良い。

Q. ニコニコで使える?Youtubeで使える?
A. 無理。

Q. h.265とx265の違いは何?
A. 規格とエンコーダ。HEVCの方が入力しやすくない?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・画質に関係するパラメータ
・HEVCはAVCから多くの技術を引き継いでいるので同名で同等のパラメータは解説を省略した。

・ref (0 - 16) (初期値 3)
 L0の最大参照数を決める。最大16まで使えるけどx265の方式ではBフレームを使用すると7までで、b-pyramidをオンにすると6までしか使用できない。それ以上にするとprofile none 、level none扱いとなりエラー吐いて止るので実質6まで。どうしても7以上使いたい場合はallow-non-conformanceをオンにする事で使える。
 アニメ素材や定点録画なら6にして、それ以外なら3以下でいいと思う。

・rd (0 - 6) (初期値 3)
 RDO(Rate Distortion Optimization)、レート歪み最適化のレベルを決める。実験中のパラメータで、現状で良い段階分けをされていない。2以下にすると画質が崩壊して色が死ぬので3から5のどれかでいいと思う。

・ctu (64 / 32 / 16) (初期値 64)
  HEVCは動画をCTU(Coding Tree Unit:四分木型符号化単位)という正方画素ブロック単位にわけ、さらにそれをCU(Coding Unit:符号化単位)単位に分割して様々な処理を行う。PU(Prediction Unit:予測単位)とTU(Transform Unit:変換単位)が扱う領域の平坦なところをまとめて処理すればその分圧縮できるので、これの最大値が大きいほどビットレート当りの画質を稼ぎやすい。逆に複雑な部分にはより細かなCUを割り当てる。
 減らしたぶんだけエンコードも早くなるので画質が重要でないなら下げていいと思う。これを下げざるをえないほどの状況もよく分からないが。
 
・min-cu-size (64 / 32 / 16 / 8) (初期値 8)
 CUの縦横の最小値を決める。これが大きいほど細かい計算をしなくなるのでエンコードは早くなるしビットレート当りの画質は下がる。
 ctuが16なのにmin-cu-sizeが32、64とかにするとエラー吐いて止る。

・max-tu-size (32 / 16 / 8 / 4) (初期値 32)
 最大TUサイズを決める。

・rect (初期値 オフ)
・amp (初期値 オフ)
 CUに分けて処理する際に予測ブロックを正方形以外の形や長方形などにも分解できるようにする。HEVCはAVCよりも多くの形状のブロックサイズが規定されているので、より圧縮率が上がっている。エンコードが遅くはなるが、それ以上に画質が上がるので付けて損はない。
 ちなみにrectがオフだとampはオンにしても働かない。(´ ・ω・`)<ニート乙

・fast-intra
 イントラ予測では隣接する上左ブロックからの補間で予測画像を作成し、その差分を符号化することで容量を削減する。
 初期値では有効になっており合計で10モードチェックする。--no-fast-intraで無効にすると合計で33モードチェックする。オフにしても劇的な画質向上はないけれどもエンコ時間は微増加ですむので、気合入れて動画作る時だけオンでいいと思う。
 動画容量を意図的に、それも極端に絞り込むなら有りかなあ・・・・・・とは思う。

・rdoq-level (0 / 1 / 2)
 レート歪み最適化による量子化(Rate-distortion optimized quantization)レベル。量子化で解析する量を決める。画質を心理的に最適化する機能なのでssimなどは下がるが、見た目は良くなる。
 0でレート歪みを考慮しない。1で簡易。2で完全。ビットレートが有り余ってる(5桁以上ある)なら--no-rdoq-levelでオフにしていいと思う。

・tu-intra-depth (1 - 4) (初期値 1)
・tu-inter-depth (1 - 4) (初期値 1)
 各処理の再帰的なCUの四分木分割の回数を決める。これを上げると圧縮効率が向上する。

・nr-intra
nr-inter
 ノイズ除去。これ使うならAviUlt等の機能使ったほうが良い。

・max-merge (1 - 5) (初期値 2)
 動き保障予測の範囲を決める。隣接するブロックの動き情報が似ていればそれを流用し、その位置情報を代わりに送る事で1つに統合して符号量を減らす。HEVCの強力な機能の1つで、動きの激しい動画では特に有効的。
 常に5でいいと思う。

・me (0:Dia - 4:Full) (初期値 Hex)
 動き予測アルゴリズム。4:Full Searchは3:Starに毛が生えた程度で時間に見合うだけの出力が得られないので1:Hexか2:Umhでいいと思う。
 Umhで満足できない画質なら、他の設定が悪いかソースが悪いの2択なので無理に上げる要素ではない。

・subme (0 - 7) (初期値 2)
 サブピクセル動き予測。数値を上げた分だけ画質も上がるがかなりエンコ時間が増える。3が実用的な値だと思う。5以上は時間が有る時にしたほうが良い。

・merange (0 - 32768) (初期値 57)
 動き検索範囲。再生時間にもよるが増やしたぶんだけ効果はある。けど4桁5桁に設定するとエンコードが終わらないので57~99の範囲で設定するのがいいと思う。最大値にするとエラー吐いて止る。

・weightp (初期値 オン)
・weightb (初期値 オフ)
 それぞれPスライス、Bスライスを使用した重み付き予測を有効にする。Pスライスは1枚の画像から復号されるスライスで、Bスライスは複数の画像から復号されるスライス。エンコ時間は増えるけどビットレート当りの画質は上がるので付けとけばいいと思う。

・psy-rd (0.00 - 2.00) (初期値 0.3)
 画質の視覚的な調整をする。人の視覚的に細かいと感じる部分をぼかす事で画質を稼ぐ。使うなら初期値か上げても1.00未満。動画圧縮の重要な技術の一つなんだけど今だに良く分からない。

・psy-rdoq (0.00 - 50.00) (初期値 1.0)
 psy-rdのぼかしを防ぐことができる機能。rdoq-levelが1か2で使える。実写や細かい粒子が漂う動画なんかでは、この値を高くすることで元の画質を保持できる。
 ソース別に挙動を確かめてから弄った方が良い。psy-rdと共に動きの激しい部分で効果がある。

 この2つの値を0にするとエンコードするときに細かいところは非常にボケ易くなる。低い値でも両方がオンなら心理的な画質は向上する。値を増やし続ければ心理的な画質は増加するが、当然必要なビットレートも増えるし、ssimは低下しやすい。低いビットレートではこれらの効果は低減する。

・rc-lookahead (最大連続Bフレーム数 - 250) (初期値 20)
 レート制御先行検査フレーム数。先読みするスライス型フレームの最大数を決める。上げた分だけ効果はあるが最小値はbframesまでで、最大値はkeyframeを超えると効果が減る。

・b-adapt (0 - 2) (初期値 2)
 適応的Bフレーム挿入。初期値から下げても圧縮率とエンコード時間がわずかに減るぐらい。

・bframes (0 - 16) (初期値 4)
 最大Bフレーム連続数。値が少ないほどエンコが早くなる。当たり前だけどb-adaptの値で効率が変化する。

・bframe-bias (-90 - 100) (初期値 0)
 Bフレーム挿入傾向。値を増やせばよりBフレームを使うようになる。Bフレーム使用率が変わって面白い以外特に使う理由はない。

・b-pyramid (初期値 オフ)
 ピラミッド参照。再生規格の問題で、PC以外で利用予定がないならオンでいい。箱1は10bitHEVC対応してるけどこれオンにしても見れるのかな。
 (´ ・ω・`)<てかぽっと出のゲーム機に再生規格で負ける動画サイトって・・・・・・。

・lossless (初期値 オフ)
 ロスレスの名のとおり超低圧縮(元の半分ぐらいの容量)でエンコしてくれる。遅いプリセットほど高圧縮になる。用途が良く分からないけど、これ使うなら固定量子化量でqp 4とかの方が良いいと思う。
 (´ ・ω・`)<そもそもそんな画質こだわるなら無圧縮でいいんじゃないかな。

・aq-mode (0 - 2) (初期値 1)
 適応的QP(AQ)。複雑な部分ではビットレートを増やし、平坦な部分では減らす。
 0でオフ。
 1でAQをオン。
 2でauto-variance AQをオン。
 1と2どちらも上げすぎるとモザイク動画になるのでaq-strengthは初期値から変えないほうが良い。

・aq-strength (0.00 - 3.00) (初期値 1.0)
 AQ強度。0にするとAQオフ。実写やゲーム以外のソースでは上げる必要はないと思う。上げてもssimは低下する。

・qg-size (64 / 32 / 16) (初期値 最大CU値)
 量子化グループサイズ。最小CUサイズの量子化量を指定できる。ctuと同じ値にしておけばいいと思う。ctu超えても自動で同じ値に制限される、はず。

・cutree (初期値 オン)
 x264のmbtreeのような物。動きが少なく参照数も少ないところはビットレートを少なく割り当て、頻繁に参照される部分には多く割り当てる。激しく動く動画では効果がある。オフにするメリットはエンコ時間が減らせるぐらい。

・slow-firstpass (初期値 オフ)
 高速ファーストパス。マルチパスで1stパスのエンコを高速化する。エンコ時間を考えると常にオンでいいと思う。

・qcomp (0.00 - 1.00) (初期値 0.6)
 ビットレート変動量。高い値にしておけばcqp(固定量子化量)の品質が改善する。マルチパスなら初期値でいいと思う。

・qpstep (初期値 4)
 最大QP変動幅。知らぬ間にコマンドから消えた。

・zones
 フレーム単位でエンコ設定を指定できる。暇を持て余した人達用。

・qpfile (string:"filename")
 自分で作った量子化行列を読み込ませる事ができる。暇を持て余した人達用。

・deblock = <int:int> (-6 - 6) (初期値 オン = 0:0)
 デブロッキングフィルタ。PUとTUの境界画素に対して実行される。AVCと同じ方式で動き、付ければ画質は上がる。

・sao (初期値 オン)
 画素適応オフセット(Sample Adaptive Offset)。エッジ・オフセット処理とバンド・オフセット処理で構成される。デブロッキングフィルタがブロックの境界の歪みを減らしてくれるのに対し、SAOはブロック内部のリンギング歪み、グラデーションの縞々の劣化を減らしくれる。
 デブロックとSAOを同時に使えばSAOのみの場合に比べて圧縮率が相当上がる。HEVCからの機能でありオフにする理由も特にない。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・エンコ速度に関係するパラメータ
・wpp (初期値 オン)
 WPP(Wavefront Parallel Processing)、波状並列処理。左から2番目のCTU符号化を終了した時の状況を、次のラインのCTUの先頭に送ることで、圧縮効率の低下を抑える。事前にある程度解析した結果を渡す事で符号生成効率の低下を防げるらしい。(´ ・ω・`)<なるほど分からん

・pmode (初期値 オフ)
 Parallel mode decision、並列モード解析。複数のCPUコアを使って計算の並列化を行い高速化するらしい。rectがオンの場合、rdが3か4で最も効果的に働く。rdを5か6にしてもなお処理に余裕がある場合はさらに働く。pmodeは圧縮効率を下げることなくCPU使用率を増加させる。実際には十分な性能がないとエンコード速度は低下する。(´ ・ω・`)<これまた分からん

・pme (初期値 オフ)
 Parallel motion estimation、並列動きベクトル検出。特定のCUから2つ以上の動き探索を参照された時、これを複数のスレッドで行う。CPU使用率が100%とかでなく、十分余裕がある場合にのみ有効。出力される物に影響は出ないがCPU使用率が増加する。たぶんメニーコアとかじゃないと付けても効果でないと思う。

 簡単に上記3つを比較した画像




 画質優先ならpmodeをつけるし、速度優先ならwppのみがいい、のかなぁといった所。
 (´ ・ω・`)<もう少しビットレート下げて検証すればよかった・・・・・・

・early-skip (初期値 オフ)
 最大サイズのCUを分析して省けそうな計算を取り除く。出力にほぼ差は出ないがエンコードが早くなる・・・・・・らしい。試してみたけれど現状では誤差レベル。今のバージョンで無理に付けるほどの機能ではないと思う。

・tskip-fast (初期値 オフ)
 唯一のN×Nイントラ予測(4×4ブロック)のスキップ変換を評価するパラメータ(解読不能)no-tskip-fastでスキップしない。出力に何も差が出なかったので特に弄らなくていいと思う。
 (´ ・ω・`)<どゆことなの・・・・・・?

・analysis-mode (0:オフ / 1:解析結果を保存 / 2:解析結果を読み込む) (初期値 0:オフ)
 1度解析した結果をexeファイルがある場所に”x265_analysis.dat”として保存する、または読み込む(ファイル名は--analysis-fileで変更可)。保存されるのはI/P/Bフレームの情報。1分1GBのソースで10GBぐらい出力されるのでHDD容量と相談したほうが良い。アニメソースだとエンコ時間が0.6倍くらいに高速化した。
 ニコニコ用、Youtube用みたいに同じ動画を複数回エンコする人には有効的だと思う。対応すればの話だが。

・analysis-file (string:"filename") (初期値 x265_analysis)
 analysis-modeで扱うファイル名を決める。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━・プロファイル
 AVCから引き継いで解像度や再生媒体に応じて機能を制限するためにプロファイルやレベルが定義されている。x264でエンコしてもPSPやPS3、あるいはスマホで再生できない動画が有る場合大体これに引っかかっている。ビルドに依るがx265では大体以下が使える。
 パラメータのprofileは自動で決定されるので弄る必要ない。

・Main

 一番使われると思われる基本的なプロファイル。10bit画素以外のHEVCの仕様が使える。

・Main 10
 ↑に10bit画素をサポートしたプロファイル。

・Main Still Picture
 静止画像に特化したプロファイル。Mainから動き補償関係を省いた物。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・レベル
 HEVCではレベルに応じて最大ビットレートを制限する層(Tier)という概念を導入している。一般向けのMain Tierと商用(プロ)向けのHigh Tierが存在する。レベルは1から6.2、それと8.5が存在する。8.5はStill Picture用なので間違っても使わない事。
 パラメータのlevel-idcは自動で決定されるので、モバイル向けの規格に合わせるでもなければ弄る必要は無い。
 パラメータのhigh-tierはlevel-idcを明示しないと無効化される。初期値ではオフ。

・フルHD(1920*1080)で24fpsならレベルは4となり、最大ビットレートはMain Tierなら12000kbps、High Tierなら30000kbpsとなる。

・4k2k(4096*2048)で24fpsならレベルは5となり、最大ビットレートはMain Tierなら25000kbps、High Tierなら100000kbpsとなる。

・8k4k(8192*4096または8192*4320)で24fpsならばレベルは6となり、最大ビットレートはMain Tierなら60000kbps、High Tierなら240000kbpsとなる。

・4k2kまでなら300fpsまでサポートしており、8k4kでは120fpsまでサポートしている。

・AVCでもあったけどfpsと使うパラメータ次第でレベルは上昇する。上の説明はあくまで最低値。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━
・Q&A
Q. AVCからHEVCに切り替えたほうが良い?
A. AVCから切り替えるならVP9の方が良いと思う。

Q. 画質が2倍になるって本当?
A. 2倍にも4倍にもなるし3.34倍にもなるし3.141592倍にもなる。すべてはソース次第。
 動きが少ないほど容量当りの画質は良くなる。動きが多すぎると理論上高圧縮化は無理。この手の性能向上の宣伝文句は過信しないほうが良い。

Q. (´ ・ω・`)<やだ私の解説記事、中身薄すぎ・・・・・・?
A. (´ ・ω・`)<動画圧縮は専門じゃないんで~(言い訳)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・使った感想
 AVCと比較してHEVCは明らかに綺麗で複雑。低ビットレート帯ではまず間違いなく最強だと思う。だけど現状では実験的なパラメータも存在するしまだまだこれからといった感じ。h.266の規格作りが2018年からボチボチ始まるので、その頃には今以上に洗礼されたHEVCが見れるはず。

 ニコニコ的な話だと一般会員向けに対応を進めてるらしい。HEVC(とAVC)は「より高画質で動画を作る」人達向けじゃなくて、「より低ビットレートで画質を何とかする」人達向けなので、これにニコニコ動画が対応すれば見るに耐えない一般会員のゲーム動画や、プレミアム会員でもビットレートが確保できない長時間の動画での画質改善ができるはず。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・おまけ
ビットレートごとの左←x265と右→x264の比較。上から順に150kbps、300kbps、1000kbps。
フルHDでエンコしたものを960*540に縮小してくっつけたもの。クリックで拡大。
(´ ・ω・`)<画像の容量制限で勝手に縮小してすまぬ・・・・・・すまぬ・・・・・・














終わり。
 <⌒/ヽ-、__
/<_/____/

 ̄ ̄ ̄ ̄ ̄ ̄ ̄


広告
×
英語が読めない自分にはとても参考になりました。
ありがとうございます。
21ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。