–longhelp)に記載された事項についての解説です。オプション表示で記載しています。」とは表示が異なることには注意していただきたいものの、項目の名前を適宜読み替えていただければ参考にはなるかと思います。期間の経過に伴って、オプションが追加されたり、変更される場合があるため、鵜呑みにせず用途に応じて設定ください。–fullhelp)については多岐に渡り過ぎる事から解説しませんが、使用頻度や重要度からすると、殆どの場合はロングヘルプのみの設定で問題無いと思います。解説は、動画の仕組みをある程度分かる人向けに書いています。–longhelp]で表示される内容をそのまま引用しています。その他の部分が筆者の解説や見解になります。管理人はx264の開発者でもなければ、エンジニアでもありません。間違っている場合もある事から、参考までにお願いします。現時点では、解説は未完成です。気が向いたときに適宜更新をしていきます。optionsx264のヘルプ(オプション)を表示させるコマンド1。本当に大切な項目や多用される項目のみ表示されるようになっております。最近のx264は賢い事から、拘りがない限りはここに出てくるオプションを設定するのみで事足りると思われます。気になることがあればまずはこれを。項目を弄ってみると良いと考えます。optionsx264のヘルプ(オプション)を表示させるコマンド2。–helpでは表示されないもの含め、(特殊なオプションを除いて)x264で使用可能な殆どの項目を表示します。載っていないようなオプションの細かい詳細情報が記載されていることもあるため、暇なときにでも読んでみると参考になるかもしれません。内容までで事足りると思われます。参照してみてください。optionsx264のヘルプ(オプション)を表示させるコマンド3。x264に搭載されている全てのオプションを表示できます。載ってないような特殊なオプションを調べることができます。項目はあっても、そこで選択可能なオプションの選択肢が省略されている場合があります。いった特殊な選択肢や、その他の補足説明まで確認する事が出来ます。表示されない特殊用途のオプションを使用したい方や、更に設定を煮詰めたい一部の方は読んでみてもよいかもしれません。読んでから、それでも足りない場合のみに、段階を追って読むようにした方が良いと思われれます。high444h264のプロファイル(ビデオの再生負荷や使用メモリ量を制限するもの)を設定するためのオプションです。h264はプロファイルによって、使用可能なオプションやビットレートの上限が定められています。h264」分かりやすく詳しく記載されていることから、気になる方は調べてみていただけると幸せになれると思います。high444」から選択可能です。プロファイルを指定すると、もし後続で特定プロファイルで使用不可能(規格で許された範囲を超える)なオプションを使用したとしても、x264がプロファイル内に収まるように下方修正してくれます。全ての設定に優先される(ユーザーが指定したオプションを上書きします)」ということに注意が必要です。high」あたりで、それ以外を使う場合はかなり限定的な状況になるかと思われます。パソコン向けの動画では、効果は非常に限定的になると考えます。パソコン以外で再生する用途、例えばBlu-ray機器やモバイル機器用途等でプロファイルを限定したい場合には設定する必要が生じる可能性があります。high」以外で使用する可能性があるものを強いてあげるならば、「high10」あたりでしょうか。これは10bitエンコードを行う場合に必要になってきます。10bit動画はそれなりの知見が無いとエンコード設定や再生環境の準備が大変ですが、チャレンジしたい方はしてみても良いかもしれません。(10bitエンコードは、階調飛び(階調割れ、バンディングノイズ、とも言われます)に効果的と言われています。medium,slow,slower,veryslow,placebox264の開発者が準備したエンコードのプリセットを使用できるオプションです。ここに記載されたプリセットを選ぶだけで、基本的にはバランスの取れた設定をしてくれる優れた機能です。最近のx264は優れているため、プリセット指定だけでもそれなりに良い結果を得られます。初心者の方は積極的に使うべきで、ある程度慣れてから、オプションをカスタマイズしていくのがよいと思います。x264は余りに機能が多く、初めから全てを使いこなすことは困難かと思われます。placebo」から選択できます。圧縮が高速だが画質が悪いのがultrafast、その逆で、最も低速だが画質がが良いのはplaceboになります。ベースの設定をつくり、その下地に対してオプションを追加していく方法を想定しているのだと思われます。veryslow」あたりが適正値だと思います。以下の高速エンコードを選ぶ必要性は正直感じません。画質優先で設定してもよいのではと思ってます。行くと明らかにやり過ぎなので、程々にしてください。エンコード時間が伸びるわりに画質向上も限定的で、メリットは殆どないように思われます。いっちゃってるくらいですし。プリセットの中身を確認する事ができます(”–longhelp”では確認できません)。内容を一つの指針にするのも良い選択肢になります。fastdecode,zerolatency映像ソースの特性を指定する事で、映像の特徴に応じた(x264開発者の)おススメ設定を上書き(一部設定は追加)するオプション。開発者のお勧め設定が上書きされます。etc.」のような形で設定が追加されます。x264開発者は、アニメ素材には「B-framesを多めに、デブロックフィルターを強めに、適応量子化を弱め、(長くなるのであと省略)」の設定が良い、と考えているという事が分かります。その中身を確認する事ができます。内容を一つの指針にするのも良いと思う。12パスエンコードを有効にした場合のみに有効なオプションです。2パスエンコードとは「1パス目を映像ソースの解析目的でエンコードを行い、2パス目を1パス目の解析情報を元にエンコードを行う手法」の事を指します。使用すると、1パス目もユーザーが指定した全てのオプションを使用して変換が実施されるようになります。標準オプションのx264では「2パスエンコードの1パス目には、演算負荷が高いオプションは使用しない」設定になっています。これは、1パス目はあくまでも「2パス目のエンコードを行う際の参考情報(ビットレート配分を決めるためのエンコード)であるため」です。分析程度で時間をかけても時間帯効果が無いよね、という事えですね。フルオプションで1パス目をエンコードしたところで、(効果は無いとは言いませんが)効果は限定的であるとされているので、正直使用する意味は殆どないと思われます。指定するくらいなら、2パス目の設定を画質重視にしたほうが時間対効果が非常に優れていると考えます。[250]I-framesの最大間隔を設定します(I-framesとはキーフレームのことを指します)。使用頻度ではない事に注意する必要してください。一般的には、FPSの10倍(30fpsなら300、60fpsなら600)の値に設定することが望ましいといわれています。指定したフレームが経過した場合に挿入される事になります。選択される、という動作になります。動画のベース/起点になる非常に重要な重要な要素であります)。比べてサイズが非常に大きいという事に注意する必要があります。過剰に小さい数値を指定すると無駄にIフレームが挿入されることとなります。I-framesはP-frames、B-framesと比較してサイズが大きい事から、必要以上にI-framesが動画に含まれてしまうと、ビットレート指定の場合は全体画質の低下、クオリティー指定の場合は動画サイズの肥大化をまねくことにつながります。増やせばいいというものではなく、バランスが重要です。Iフレームは画質以外にも、動画のシーク速度にも影響する事に注意をしてください。値があまりに大きい数値である場合、シーク速度が落ちる、シーク時に引っかかる、等の弊害が出る可能性があります。[3]B-framesの最大の連続可能数を設定します(設定可能な最大数は16らしいです)。本オプションはB-framesの挿入頻度や閾値ではなく、最大連続可能数であることに注意してください。B-framesの挿入頻度や閾値を上げたい場合は、別のオプションでコントロールすることになります。数値が大きいほどB-frames挿入の自由度があがるため、動画の圧縮率は上がります。数字が大きい程に演算負荷が上がる(エンコード時間が増える)ことには注意が必要です。バランスよく、程々に抑えるべきでしょう。B-frames自体は、一般的にはIフレーム等と比較して画質は悪いものになりますが、ビットレートあたりのコスパがいい為、動画全体をとおしてみると画質は向上します。そもそも、動画は1秒間に30フレーム近く変わるため、B-framesが連続しない限りは、画質低下が分かる事がないと思います。最近のx264は賢いために、不必要にB-framesが挿入される事はありません。なるべく大きな数値を指定した方が有利になります(ただしエンコード負荷は増えます)。アニメ作品は、大きい数字を指定したときの効果が大きいとされます。これは、アニメ作品は実写と比較して類似なフレームが多い事から、B-framesを適用できる割合が高いためです。これはx264開発者も、アニメでは効果が大きいと認めた事に他ならないと考えています。B-framesの最大値が大きいほど動画再生時のメモリの使用量が増えます。仮に余りに大きい数値を指定したとしても、性能に余力があるPCでは問題が起きることは稀でしょう。スマホ等のメモリ量が制限されているモバイル機器では、演算性能やメモリが不足して再生出来なくなる可能性があります。数はH264のプロファイルやレベルによって制限されています。等のオプションで上書きされる可能性があることには注意しましょう。最適値について、実験から適正値を考察してみました。挿入アルゴリズムを設定する項目です。わかりやすく説明すると、「あるフレームをB-framesとするのか、P-framesとするのか、を決めるアルゴリズム」を設定する項目です。動画ファイルは「全てを記録するI-frames/ある画像をベースに差分のみを記録したP-frames/B-frames」から構成されます。似た部分を共有し、差分のみを記録することで大幅なデータ削減を実現している訳です。–ref」にて詳しく説明しているため、興味のある人は読んでみていただけると幸いです。データ量が小さくなります。どちらを使用するのか、適切に判断する必要があります。動画の画質に対する影響が非常に大きいため、圧縮率を考えるなら「モード2(最適なアルゴリズム)」を使用すべき。–bframes)」とある通り、「モード2(最適なアルゴリズム)」と最大B-frames数には注意が必要すること。「–bframes」を大きな値で設定するほどに、圧縮率は改善するが、一方でエンコード速度低下の影響幅が増大していく。0:「適応B-frames挿入」を使用しない。1:「適応B-frames挿入(高速なアルゴリズム)」を使用する。画質はモード2に劣る。2:「適応B-frames挿入(最適なアルゴリズム)」を使用する。速度はモード1に劣る。compatible)「B-framesの参照元に、B-framesを使いますか?」っていう設定。本来B-framesは、I-framesかP-framesを参照元にして生成される。strictまたはnormalを指定すると、B-framesの参照元にB-framesを指定する事も可能になる。なれば生成元の選択肢が増え、I-frames/P-frames/B-framesの3つからB-framesを生成する事が可能になる。noneの場合に比べて、strictとnormalはビットレート当たりの画質が向上する。演算負荷が増大する(エンコード時間が延びる)。none:オフにする。strict:B-framesの参照元へ、B-framesを使用する事を許可する。normal:B-framesの参照元へ、B-framesを使用する事を許可する。pyramid)を有効にすることから、Blu-ray向けの動画ファイルを作成する場合には使用できない。パソコンでみる動画ならstrictに拘る必要なく、通常はstrictよりも高画質が狙えるnormalで良い。これにより、演算負荷は下がるが、圧縮効率(画質)は低下する。演算負荷が軽くて効果がそこそこのCAVLCと、演算負荷は高いが高圧縮が期待できるCABACの、2つのエントロピー符号化を採用している。何らかの事情でBaselineプロファイル(一番低いプロファイル)の動画を作りたい場合等に、本オプションを有効にする。Highの3つのプロファイルが存在する。PCならばHighで問題ないが、モバイル機器等の演算能力に限りがある機器ではBaselineが用いられる場合がある。[3]動画圧縮の根幹を支える技術の一つである、フレーム間予測で使用される、「参照フレームの距離」を指定するオプションです。P-frames)のベースになる部分の事。動画とは「画像を高速に、尚且つ連続で表示する事によって、静止画があたかも動いているように見える技術」の事である。イメージし辛い方は、パラパラ漫画(本の角に絵を書いて、高速で変化させるもの)を超高度にしたもの、と捉えて頂くとよいかもしれない。日本の放送規格では、画像は約30枚/秒(正確には30000枚/1001秒)の速度で連続で表示されています。アメリカ等の放送規格では25枚/秒の速度で表示されています。動画はその仕組み上「前後近くに存在する画像同士は、殆ど同じ(差異は余りない無い)」という事がいえます。自動車のレースを思い浮かべてください。背景は、少しだけ引いたりズームしたする場合もあるかもしれませんが、急に大きく動く事はありません。レース車両についても、タイヤの部分は高速で回っていることから絶えず変化しますが、それ以外の余り変わらないですよね。動画圧縮とは、この特性を用いて「全てを記録するI-frames/ある画像をベースに差分のみを記録したP-frames/B-frames」から構成されます。似た部分を共有し、差分のみを記録する技術を活用する事によって、大幅なデータ削減を実現している訳です。似ている確率が高いはずです。離れる程に低下していきます。似ている(差異が少ない)とは限らない」部分にあります。似ている可能性だってあるわけです。何枚先(又は何枚前)まで取りうるか」という事を決めるオプションになります。当然ながら数を増やせば増やす程に、近似の画像を見つける事が出来る可能性が向上し、動画の圧縮率は向上します。選択肢が多いという事は、それだけ探すの事に時間がかかる(演算負荷が高くなる)という事です。無暗に大きい値をセットするのではなく、適切な値をセットする事が必要です。ビットレート当たり画質が向上する。ビットレート当たり画質が低下する。ついて、実験から適正値を考察してみました。filterデブロッキングフィルタ(ブロックノイズを除去するフィルター)を無効化するオプション。デブロッキングフィルタは、h264規格で定められている画質向上フィルターである。ブロックノイズは動画圧縮時に生成されるアーティフィクト(簡単に言えばブロック状のノイズ)のことであり、特に低ビットレート(低画質)の動画で発生しやすいノイズである。等)に分割し、その分割されたブロック単位で離散コサイン変換(DCTの事)や動き補償等の計算を行うことでデータ量を削減している。動画は連続する1枚の画像から成っているように感じられるが、実は小さなブロックの集まりから成っているということである。ブロック単位で変換されるデメリットの一つとして、ブロック同士の境界線がクッキリと見えてしまう事がある。このアーティファクトをぞくに「ブロックノイズ」と呼ぶ。ブロックノイズは一般的に、動きが極端に激しい場面や低ビットレートの動画で、情報量が足りないときに発生する傾向にある。デブロッキングフィルタとは、この境界線をぼかして、境界線を目立たなくする効果がある。僅かに動画が眠くなる(意図しない細部もぼかされる)デメリットはある。そのデメリットは観ても分からない程度におさえられている。ブロックノイズが発生し辛い極端な高ビットレートの場合を除き、このオプションを指定(つまりデブロッキングフィルタをオフ)にすると、ブロックノイズがぼかされずに見えてしまう(画質が低下する)原因となる。デブロッキングフィルタの副作用として「画像が甘くなる(ぼやける)」事象が存在する。そのため一部では「デブロッキングフィルタを無効化するべき」という方方も存在するが、無効化は明らかにデメリットが多きいため、オフは推奨できない。x264はデブロッキングフィルターが有効である前提で最適化されている事から、無効化する事で、設定のバランスが崩れる可能性がある。動画圧縮とは「如何にファイルサイズ小さくしつつ、画質を維持するか」という点が、至上命題である。デブロッキングフィルタを無効化するという事は、個人的には至上命題を蔑ろにする事と同義であると考えている。デブロッキングフィルタは非常に効果的な処理でえあるが、演算負荷が比較的大きい事に注意。[0:0]デブロックフィルター(ブロックノイズを除去するフィルター)の強度と閾値を定めるオプションである。左がフィルター強度を、右側がフィルターの閾値を決める。デフォルトの0:0は、開発者が定めた最適値である。ブロックノイズに関する詳細が知りたい方は、本ページの「–no-deblock」の欄を確認してください。強度を高くすると(数値を大きくすると)、ブロックの境目に掛かる除去フィルターが強く掛かることによってブロックノイズの隠蔽率は上がるが、本来は保持したい細かなディテールまで除去されてしまう可能性が生じる。副作用で画像がボケたり滲んだりする可能性がある。閾値を上げると、フィルターが適用されない対象が増える(より強力にブロックノイズが出ている場所のみにフィルターが有効となる)。最適値が[0:0]である事から、効果を弱めたい場合はマイナスで指定する。数値は[-6:-6]~[6:6]の範囲で設定可能らしい。基本的にはデフォルト値の[0:0]は丁度良い数値であるため、変える必要性は薄い。変更するならば、実写映像は[0:0]~[-3:-3]のようにマイナス方向へ、アニメ映像は[0:0]~[3:3]のようにプラス方向への調整が望ましい。実写はシャープさを、アニメはノイズの少なさを優先したほうが、一般的には好ましく感じるとされる。アニメのようなベタ塗の映像ではノイズが目に付きやすいが、実写ではベタ塗では様々な色や線があり、ノイズが目立ちにくいためである。first)インターレース動画(対義語はプログレッシブ動画)の圧縮を有効とする。素材がインターレース動画ならば指定する。fieldは片方しか指定できないので、–tffと–bffのオプションを両方有効化する事は出来ないはず。(未確認)基本的に、インターレースはプログレッシブに対して圧縮率が落ちる事には注意する。インターレース素材を逆プルダウンしてからエンコードするのか、インターレースを保持したままエンコードするのかは、各自の考えで判断して選択したらいいと思う。どちらにもメリット、デメリットはある。インターレースはh264特有のものではない事から、説明は割愛します。ついて気になる方は別途調べてください。