x264 初心者質問スレ part4

このエントリーをはてなブックマークに追加
854名無しさん@編集中
>>853
たとえばscenecutを40から80にあげると、40ではPフレームと判定されていたフレームが
IDRまたはIフレームとして扱われることが多くなる
IDRになるかIになるかは、直前のIDRフレームまでのフレーム数とmin-keyintの値で変わる
もし直前のIDRまでのフレーム数がmin-keyintより小さければI、大きければIDRになる

ちなみにx264的には
I-frame = IDRフレーム
i-frame = IDRではないが、他のフレームを参照しないフレーム(Iフレーム)
P-frame = Pフレーム
B-frame = Bフレームでb-pyramid使用時に他フレームから参照されるフレーム
b-frame = Bフレームで他から参照されないフレーム
855名無しさん@編集中:2011/07/20(水) 21:47:13.77 ID:nCViAVKd
Iフレーム == キーフレームとは限らないというのは合っているが、
別にIフレームじゃなくてもシークが出来るというのがH.264/AVCの特徴。

H.264/AVCにおいてランダムアクセス(シーク)の方法は3種類あって、
1. Closed-RAP (IDR, 瞬時デコーダリフレッシュ)
2. ランダムアクセスリカバリーポイント(GDR, 漸次デコーダリフレッシュ)
3. Open-RAP

一応、x264としてはいずれの方法もサポートしてる。
1. IDRフレーム
2. intra-refresh
3. Open-GOP

コンテナとしては2.および3.に関してはMP4出力では正しくサポートされていない。
2.はMP4コンテナの規格で定義されているが、3.は依然として定義されていない。
3.はAVCストリーム的には2.の限定条件ver.だが、MP4コンテナ的には違う扱いをする。
Matroskaとか他のコンテナではどうかは知らん。

キーフレームという用語はちとアレなんだよね。
x264的にはキーフレームっていうのはIDRフレーム,
Open-GOPでのシーク出来るIフレーム、及び、GDRでのリカバリー開始フレームを指す。
Apple的にはキーフレームっていうのはIDRのみを指す。多分、ISO/MPEGもAppleと同じ。

x264はOpen-GOP時は最初のフレーム以外はすべて非IDRのIフレームになるが、ストリーム的にはシークは可能である。
この場合、シークに利用されるIフレームにはリカバリーポイントSEIが付属する。