最低限把握しておいた方が良い事
、、、と言うわりには随分多いし、他にも書いてある事だけど。一応、念のため。
コデック
映像や音声を、0と1に変換する方式。
「1,0,0,0,0,,,,」と書くよりは、
「1,0が4,,,,,,,,」の方が少ない文字数で済む。紙の節約になる。
ここで仮に、前者をA式、後者をB式と呼ぶ。
A式しか知らないパソコンはB式の信号を読めず、わけわかめになる。
B式はこうやって読むんだよ、と書いてある解読表を持たせてやる必要がある。
「1,0,0,0,0,,,,」と書くよりは、
「1,0が4,,,,,,,,」の方が少ない文字数で済む。紙の節約になる。
ここで仮に、前者をA式、後者をB式と呼ぶ。
A式しか知らないパソコンはB式の信号を読めず、わけわかめになる。
B式はこうやって読むんだよ、と書いてある解読表を持たせてやる必要がある。
これは映像や音声に限らない。文字であれ画像であれ、パソコンが扱うありとあらゆるものに存在する。SHIFT-JISとかユニコードとか、JPEGとかPNGとかそうゆうのも「コデック」。
なんで動画だけコデックがそんなに問題になるかとゆうと、たぶんそれだけ新しい領域と言う事なんだと思う。
なんで動画だけコデックがそんなに問題になるかとゆうと、たぶんそれだけ新しい領域と言う事なんだと思う。
とゆうふうに符号化することをエンコード、もとに戻す事をデコードと言う。繋げて略して「コデック」と呼ぶのだそうだ。
なお、デコードと画面への表示は別のプロセス。
例えばMPEG2をエンコードする際には、一旦MPEG2をデコードした後で、(画面に表示せずに)フィルタやエンコーダに渡す。
再生する際にはデコードの後でCoreVideoなりQuartz/QuickTimeなりの「描画ルーチン」に渡す。
例えばMPEG2をエンコードする際には、一旦MPEG2をデコードした後で、(画面に表示せずに)フィルタやエンコーダに渡す。
再生する際にはデコードの後でCoreVideoなりQuartz/QuickTimeなりの「描画ルーチン」に渡す。
コンテナ
映像と音声の入れ物。
他に字幕や副音声なんかが入ってる事もある。
単純に詰め込んであるわけではなく、音がズレたりしないようにしたり、字幕や音声の切り替えがができるように、管理するしくみ。
これが、ヘッダとかFourCCとか呼ばれるもの。.mp4コンテナの中に、AVIの書式で書かれたヘッダは入れられないし、AVIコンテナの中にmp4の書式で書かれたヘッダをいれる事もできない。
理屈上は不可能では無いが、大半の再生ソフト/機器類はそこまで対応できないだろう。
拡張子は単純な目印みたいなもので、実は実際の中身とはあまり関係がない。
他に字幕や副音声なんかが入ってる事もある。
単純に詰め込んであるわけではなく、音がズレたりしないようにしたり、字幕や音声の切り替えがができるように、管理するしくみ。
これが、ヘッダとかFourCCとか呼ばれるもの。.mp4コンテナの中に、AVIの書式で書かれたヘッダは入れられないし、AVIコンテナの中にmp4の書式で書かれたヘッダをいれる事もできない。
理屈上は不可能では無いが、大半の再生ソフト/機器類はそこまで対応できないだろう。
拡張子は単純な目印みたいなもので、実は実際の中身とはあまり関係がない。
1パスエンコード
- 別名,固定ビットレート,CBR,など
- 特徴:画質可変。
動画1秒分のビットレートが指定値以下になるまで全ての場面を可能な限り圧縮する。
画質劣化の範囲はQuantizer(Qmin,Qmax)で指定。
ビットレートが1000kbit/s,Qmin=2,Qmax=31なら、1秒分をQ=2で圧縮して1000以下になれば良し。駄目ならQ=3,4,5,,,と1000以下になるまで繰り返す。1000以下になったら次の1秒分に取りかかる。
画質劣化の範囲はQuantizer(Qmin,Qmax)で指定。
ビットレートが1000kbit/s,Qmin=2,Qmax=31なら、1秒分をQ=2で圧縮して1000以下になれば良し。駄目ならQ=3,4,5,,,と1000以下になるまで繰り返す。1000以下になったら次の1秒分に取りかかる。
その結果、静止画部分と激しく動く部分では画質がすごく違う。
通常は指定bitrateをがっちり守るが、Q=2で1005kbit/s、Q=3
なら800kbit/sになる場合の動作は、コデックやオプションやソフトの方針で異なる事がある。
もちろん1005の方が綺麗だが、携帯やPSPなど、ビットレートの許容範囲が狭い機器で見るならきちんと制限を守ってくれないと困る。
なら800kbit/sになる場合の動作は、コデックやオプションやソフトの方針で異なる事がある。
もちろん1005の方が綺麗だが、携帯やPSPなど、ビットレートの許容範囲が狭い機器で見るならきちんと制限を守ってくれないと困る。
なお、同じQ=2でもkbit/sまで縮む場面もあるし、993kbit/sになる場面もあるので、
本当は上限1000kbit/sの平均bitrate(ABR)。
x264関連文書ではこのへんの用語が厳格になった。今後は1パス=ABRと表記するケースも増えてくるだろう。
本当は上限1000kbit/sの平均bitrate(ABR)。
x264関連文書ではこのへんの用語が厳格になった。今後は1パス=ABRと表記するケースも増えてくるだろう。
画質固定1パス
- 別名Qベースエンコード,固定Quantizer,Constant Quantizer(Qualityとも),可変bitrate(VBR),など。
- 特徴:画質(の劣化度)固定。
素材の画質を一律に劣化させる。
kbit/sは上限無しの可変。
どこまで縮むかは映像の内容次第で、仕上がりサイズは予想できない。
kbit/sは上限無しの可変。
どこまで縮むかは映像の内容次第で、仕上がりサイズは予想できない。
実は1パスでビットレート=100000(=事実上の無限大),Qmin=4でも同じ。
(Q=4で100000以下になったらQ=5は試さずに次のコマにとりかかる。)
Q=4で元の90%,Q=3で95%程度と言うが%は解りやすくする為の方便ぽい。Q=2でも劣化はある上、素材より巨大化するケースもある。
(Q=4で100000以下になったらQ=5は試さずに次のコマにとりかかる。)
Q=4で元の90%,Q=3で95%程度と言うが%は解りやすくする為の方便ぽい。Q=2でも劣化はある上、素材より巨大化するケースもある。
また、Q=6以上でも見た目が違わないようなシーンにもQ=4を使うので、ディスク容量が無駄になる。
x264ではQuantizerを0に固定すると、ロスレスが可能。(0.0.9tのサイトには記載が無いが、MEncoderのサイトに記述がある。未実験)
2パス
- 別名平均ビットレート,ABR,など
特徴:ファイル全体の平均ビットレートが指定値以下になるよう画質を劣化させる。同じビットレート設定なら1passより画質が良く、画質固定1パスよりファイルサイズに無駄が無い。もしも画質固定1パス,Q=4で250MBになるファイルがあったら、250MBになるようビットレートを指定した2パスの方が画質は良い。
ffmpegXで900kbpsの2パスを指定した場合、
1stはQuantizer=2の可変ビットレートでアタリをつける。この場面は900kbpsで済んだ,ここは4000kbpsかかった,など。
可変ビットレートだから、指定ビットレートは無視。
2ndで前回の経験を基にやり直す。
Quantizer=2が900kbpsになる場面で余った100kbpsを4000kbpsかかった場面に回し、少しでも低いQuantizer値を使おうとする。再配分の決定方針はコーデックやソフトや他の設定による。
1stはQuantizer=2の可変ビットレートでアタリをつける。この場面は900kbpsで済んだ,ここは4000kbpsかかった,など。
可変ビットレートだから、指定ビットレートは無視。
2ndで前回の経験を基にやり直す。
Quantizer=2が900kbpsになる場面で余った100kbpsを4000kbpsかかった場面に回し、少しでも低いQuantizer値を使おうとする。再配分の決定方針はコーデックやソフトや他の設定による。
ffmpegXに限らず、1stは2ndの半分強の時間で済むものが多く、2倍にはならない。
例外は0.0.9tのx264だが、MEncoderでは既に1stは4倍速まで指定できるのでいずれ対応するだろう。
例外は0.0.9tのx264だが、MEncoderでは既に1stは4倍速まで指定できるのでいずれ対応するだろう。
なお、自動的に2passが始まらないソフトでは2ndを設定を変えて何度もできる。(2pass-Nth)
3パス(マルチパス)
詳細不明。効果も不明。Apple-H.264の複数パスは4〜5パスとも聞く。