gazou-compressor.jp

GOPとキーフレーム間隔の最適化:低遅延と画質の実務チューニング

低遅延配信やインタラクティブなUI動画では、GOP長キーフレーム(IDR)間隔の 設計が体感を左右します。本稿では最小ルールffmpegの実例で、 遅延・シーク・帯域・品質のバランスを短時間で整える手順を示します。

先に結論(最小ルール)
  • GOP長は用途別に秒で定義(ライブ≤1–2s、VOD 2–5s)。
  • IDRはセグメント長に同期(HLS/DASHとの整合)。
  • 低遅延はB=0〜2でパイプライン遅延を短縮。
  • シーク安定化のためscene cut無効強制キーフレームを併用。

要点(TL;DR)

1. 背景:GOP設計がUXを決める

GOP長とIDR間隔は、切替/シークの安定性遅延に直結します。短すぎれば圧縮効率が落ち、 長すぎればライブで遅延が積み上がるため、用途別の秒基準が近道です。

2. まずはFPSと許容遅延から逆算

GOP長はフレーム数ではなくで考えると安全です。30fpsでGOP=60は2秒、 ライブ低遅延なら1秒(=30フレーム)を上限に検討します。

2. ffmpegの実用プリセット

2.1 VOD向け

# VOD向け(30fps, GOP=2秒, IDR=2秒, B=3)
ffmpeg -i input.mp4 -c:v libx264 -preset slow -profile:v high -b:v 2500k   -g 60 -keyint_min 60 -sc_threshold 0 -x264-params "bframes=3:ref=3:open_gop=0"   -c:a aac -b:a 128k -movflags +faststart output.mp4

# 低遅延ライブ(30fps, GOP<=1秒, B=0, tune zerolatency)
ffmpeg -i input.sdp -c:v libx264 -preset veryfast -tune zerolatency -b:v 2000k   -g 30 -keyint_min 30 -sc_threshold 0 -x264-params "bframes=0:ref=1"   -f flv rtmp://...

2.2 HLS/DASHでの同期

# HLSでセグメント境界にキーフレームを強制(2秒セグメント)
ffmpeg -i input.mp4 -c:v libx264 -b:v 2500k -g 60 -keyint_min 60 -sc_threshold 0   -force_key_frames "expr:gte(t,n_forced*2)"   -hls_time 2 -hls_playlist_type vod -hls_segment_type mpegts -hls_list_size 0 out.m3u8
# DASH(GOP=2秒、IDR同期)
ffmpeg -i input.mp4 -map 0:v -map 0:a -b:v:0 800k -b:v:1 1600k -b:v:2 2500k   -c:v libx264 -g 60 -keyint_min 60 -sc_threshold 0 -use_template 1 -use_timeline 1   -c:a aac -adaptation_sets "id=0,streams=v id=1,streams=a" -f dash out.mpd

2.3 プレイヤー設定(疑似コード)

// プレイヤーのキーフレーム合わせシーク(疑似コード)
player.seekTo( targetTimeAlignedToKeyframe(targetTime) );
player.setConfig({ lowLatency: true, maxBufferLength: 6, maxBufferHole: 0.5 });

2.4 ラダー設計の目安

# ビットレートラダー例(30fps, H.264)
240p  400–600 kbps  GOP=30–60
360p  800–1200 kbps GOP=30–60
720p  1800–2800 kbps GOP=30–60
1080p 3000–4500 kbps GOP=30–60

3. 応用とハマりどころ

4. 公開前チェック

5. まとめ

GOP/キーフレーム設計は秒で考え、配信方式と同期させるのが近道です。指標は遅延・シーク・品質・帯域の4点。 まずは上のプリセットでベースラインを作り、RUMと実測で仕上げましょう。

FAQ

FAQ(よくある質問)

1画像形式の基本方針は?(写真/スクショ/透過)
写真は AVIF / WebP(画質80–85%目安)、UIやスクショはPNG / WebP Lossless、単色ロゴはSVGが基本です。 実装の詳細は srcset/sizes設計ガイド スクショ最適化 を参照してください。
2圧縮しても画質を落とさないコツは?
実表示幅に合わせたリサイズ → 過大ダウンロードを防ぎ、srcset/sizes を 実描画幅に一致させます。画質は写真で 80–85% を起点に、ノイズやエッジを目視確認。 仕上げは /compare で Before/After を見比べるのがおすすめです。
3CLSを悪化させない画像の置き方は?
すべての画像に width/height(または親に aspect-ratio)を与え、広告・埋め込みは 予約サイズを先に確保します。詳しくは CLSゼロ設計ガイド を参照。
公開日: 2025-09-08編集: gazou-compressor.jp

gazou-compressor.jp 編集部

画像圧縮・変換・背景除去などの実践テクニックと、Webで“速く・軽く・崩さない”ためのノウハウを発信しています。

関連記事

トピック/更新日の近いコンテンツ