ffmpeg/キーフレームでカット
カットを高速にやりたいので
code:sh
# キーフレームを出力 (開始から2分間指定)
ffprobe -read_intervals %+2:00 -show_frames -select_streams 0 -show_entries "frame=key_frame,pts_time" -of csv=p=0 "$FILE" | grep "1,"
# 出てきた時間を使ってカット (この例では開始時間のみ) 。音声は再エンコードする
ffmpeg -ss 100.1 -i $F -ss 0 -c:v copy $FILE.cut.mp4
オプションについて
read_intervals
-read_intervals %+2:00 開始から2分間(+=開始時刻からの差分)
-read_intervals 8:00%9:00 開始8分から開始9分まで
記事との変更点
ffmpeg 7.1 (macOS, Homebrew) では pkt_pts_time が使えなさそうだったので pts_time に変更
side_data は省略しても変わらなかったので省略