- 対象のストリームの
codec
をcopy
に設定 -
-ss
を入力オプション (-i
の前) として使用 -
-ss
に設定する時刻を
キーフレームと同じ (か、次の frame までの間の) timestamp に設定 -
-to
に設定する時刻をkeyframe
と同じ timestamp に設定 (後述)
公式ドキュメント -ss <位置>
の説明
要約
- キーフレームを重要視する場合は、入力オプション (
-i
の前) として使用 -
seek point
とposition
との間のセグメントの扱いについてはこちらのまとめを参照: - 出力オプションとして
-ss
を設定すると再エンコードされます
原文の和訳
入力オプション (
-i
の前) として使用すると、この入力ファイル内でposition
を検索します。
ほとんどの形式では正確に seek することができないため、
ffmpeg はposition
の前に最も近いseek point
まで seek することに注意してください。
トランスコーディングと -accurate_seek が有効になっている場合 (デフォルト)、
seek point
とposition
の間のこの余分なセグメントは decode されて破棄されます。
stream のcopy
を実行する場合、
または-noaccurate_seek
が使用される場合、
stream は保持されます。出力オプション (出力 URL の前) として使用すると、
decode しますが、timestamp がそのposition
に達するまで入力を破棄します。
position
はtime duration
の形式でなければなりません。
ffmpeg-utils(1) マニュアルの (ffmpeg-utils)time duration
セクション を参照してください。
FFmpeg wiki の説明
出力オプションとして -ss
を設定すると再エンコードされます
Here, the input is decoded(and discarded) until it reaches the position indicated by
-ss
.
入力と出力両方に -ss
を設定する意味なし
動作はするが用途不明
Semantically valid, but mostly useless.
-to
に設定する時刻を keyframe
と同じ timestamp に設定する方法
説明が長くなるので概要のみ記載、1度に行うには何らかのプログラムによる自動化が必要
- まず FFmpeg でカット対象動画ファイルの PTS time を 0 から振り直し
(PTS time が 0 から始まっていない場合があるため) - FFprobe で
keyframe
の PTS time 一覧を取得 - 一覧の中からカットしたい位置の
keyframe
の PTS time を選択して-to
に設定