>>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フレームで他から参照されないフレーム
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が付属する。