キーフレームと GOP とは?動画のシークが遅い理由

ツールを使う

動画はどうやって圧縮されているか

動画をそのまま記録すると、フル HD の 1 コマだけで約 6MB になり、1 秒 30 コマなら 1 秒で約 190MB にもなります。そこで H.264・HEVC(H.265)・VP9・AV1 などの形式では、前後のフレームとの違い(差分)だけを記録して、データを大幅に小さくしています(フレーム間予測)。

動いていない背景は前のフレームのものを使い回し、動いた部分だけを記録する、というイメージです。

キーフレーム(I フレーム)と P / B フレーム

フレームの種類記録のしかた表示するために必要なもの
I フレーム(キーフレーム)そのフレームだけで完結した画像として記録そのフレームだけ
P フレーム前のフレームとの差分を記録前のフレーム(さかのぼるとキーフレームまで)
B フレーム前と後ろのフレームとの差分を記録前と後ろのフレーム

P / B フレームは、単独では画像になりません。表示するには、直前のキーフレームから順に復元(デコード)していく必要があります。

GOP(キーフレームの間隔)

キーフレームから次のキーフレームの手前までのまとまりを GOP(Group of Pictures)と呼びます。キーフレームを置く間隔は、動画を作った機器やソフトの設定で決まり、数十フレームおきから数秒おきまでさまざまです。

キーフレームの間隔が長いほどファイルは小さくなりますが、途中からの再生や移動(シーク)には時間がかかるようになります。Video Inspector Pro に動画を読み込むと、フレームの数とキーフレームの数を表示します。キーフレームのコマでは「キーフレーム」と表示され、「キーフレーム ▶▶」ボタンで前後のキーフレームへ移動できます。

シークやコマ戻しが遅くなる理由

キーフレームでない位置へ移動するとき、プレイヤーは直前のキーフレームまで戻り、そこから目的のフレームまでを順にデコードします。キーフレームの間隔が 2 秒の 60 fps の動画なら、最悪で 100 コマ以上をデコードしてから、やっと 1 コマを表示できることになります。

1 コマ戻る操作は特に大変です。1 つ前のフレームを表示するためにも、キーフレームからデコードし直す必要があるからです。Video Inspector Pro では、前へ戻るときに直前のキーフレームから目的のコマまでをまとめてデコードして覚えておき、続けて戻る操作を速くしています(WebCodecs に対応したブラウザの場合)。

編集しやすい動画の書き出し設定

コマ送りや編集を快適にしたい場合は、次のような書き出し方があります。

なお、Video Inspector Pro の「劣化なしで切り出す」は再圧縮しないため、切り出しの開始位置が IN の直前のキーフレームになります。IN ちょうどから始めたい場合は、「フレーム単位で切り出す」(再エンコード)を使います。

ツールを使う

ほかの解説