05
Chapter 05

動画トリミング

OBS で常時録画している動画から、リプレイの試合イベント(試合開始・キル・デス・試合終了)の瞬間を I フレーム精度で切り出します。

💡
フローはリプレイ起点

「リプレイを選ぶ → 該当試合を含みうる動画を絞る → 動画を選ぶ → 切り出し位置を選ぶ」の順で進みます。OBS のリプレイバッファ(既定 25 分)の中から、リプレイの試合時刻と重なる動画だけが自動で抽出されます。

2リプレイを選ぶ

「1. リプレイを選ぶ」テーブルから、振り返りたい試合のリプレイ行をクリックします。新しい順に並んでいます。

3候補動画の自動絞り込み

リプレイを選ぶと自動的に POST /api/prepare-upload/videos-for-replay が走り、obs_recording_dir 配下から「その試合を含みうる動画」だけが抽出されてテーブル表示されます。

リプレイ選択後の候補動画一覧
図 5.2 — 「2. 候補の動画を選ぶ」。試合時刻 / リプレイバッファ / 候補件数 / 除外件数を表示
フィルタルール判定基準
① 録画時刻ウィンドウ 動画の ファイル名 / mtime / ctime のいずれかが、試合終了時刻 ± リプレイバッファ秒の範囲内
② 動画長フィルタ 動画の duration >= 試合長。試合長がリプレイバッファより長い場合はスキップ(注記あり)
💡
リプレイバッファ秒の調整

判定に使うリプレイバッファ秒は config.jsonobs.replay_buffer_sec(既定 1500 秒 = 25 分)。OBS 側の実設定(01 章 §2 Step 2)と揃えてください。

4除外動画の確認

テーブル下部の <details> 「除外された N 件を表示」を開くと、フィルタで弾かれた動画とその理由が一覧できます。期待している動画が候補に出てこない場合の切り分けに使ってください。

除外された動画とその理由一覧
図 5.3 — 除外動画一覧。各動画ごとに除外理由を表示

5動画を選ぶ

候補動画一覧から行をクリックすると、その動画の 0 秒地点のサムネイルとフルパスがテーブル下に表示されます。「これで合っているか」をビジュアルで確認するためのプレビューです。

動画選択直後のサムネイルプレビュー
図 5.4 — 動画選択後のサムネイル + パス + 「オフセット候補を計算」ボタン

動画が正しければ「オフセット候補を計算」ボタンを押して次に進みます。

6オフセット候補の計算

計算が完了すると「3. カット開始位置を選ぶ」セクションが現れ、リプレイから抽出された試合イベントごとのオフセット(動画の何秒目か)がボタン群として並びます。

オフセット候補ボタン群
図 5.5 — 候補ボタン。試合開始 / Kill / Death / 試合終了 が並ぶ
kind意味ラベル例
match_start 試合開始時刻 [match_start] 試合開始 — 12.3s
kill 自分が相手を倒した瞬間 [kill] Kill #2 @08:14 EnemyName — 642.3s
death 自分が倒された瞬間 [death] Death ← KillerName — 1234.5s
match_end 試合終了時刻 [match_end] 試合終了 — 1456.7s
💡
自分が絡むイベントだけ表示されます

config.user_player_id(player.epic_display_name)が設定されていれば、Kill / Death の候補は「自分が Killer または Victim の試合イベント」だけに絞り込まれます。未設定の場合は全イベントが並びます。

切り出したいイベントのボタンをクリックすると青枠で選択状態になり、その下の「この時刻の前後 10 秒でキーフレーム検索」ボタンが活性化します。

7キーフレーム選択

キーフレーム検索ボタンを押すと、選んだオフセット ±10 秒の範囲にある I フレーム(キーフレーム)の一覧が「4. キーフレームを選ぶ」セクションに表示されます。

I フレーム候補ボタン群
図 5.6 — キーフレーム候補。HH:MM:SS.sss 表記でクリック可能なボタンが並ぶ
💡
なぜ I フレームに合わせるか

ffmpeg で 無劣化(コピーモード)で切り出すには、開始位置が I フレームである必要があります。任意の秒数で切ると再エンコードが発生し、画質劣化と長い処理時間が伴います。プリセットの ±10 秒範囲から自動で I フレームを拾うことで、無劣化トリミングを保証します。

8トリミング実行

I フレームのボタンを 1 つ選び、緑の「ここから末尾まで切り出す」ボタンをクリックすると、その位置から動画の末尾までを obs_recording_dir 配下に出力します。

トリミング完了後の出力パス表示
図 5.7 — トリミング完了。出力パス + サイズ + 長さを表示
処理時間の目安

無劣化のストリームコピーで処理されるため、再エンコードは発生しません。出力サイズと尺によりますが、数秒〜十数秒で完了します。

Tweaks
テーマ
Void
Fortniteブルー · モダン
Terminal
グリーン · モノスペース
Copper
ウォームオレンジ · エディトリアル
モード