シーンチェンジ時にビデオサムネイルを1秒あたり最低1枚出力します。

シーンチェンジ時にビデオサムネイルを1秒あたり最低1枚出力します。

サムネイルには以下の要件があります。

  1. シーンチェンジは前回と少なくとも6%異なる必要がありますselect=gt(scene\,0.06)
  2. アスペクト比は1280ピクセルの幅で維持されますscale='min(1280\, iw):-1'
  3. 各サムネイル間の間隔は最低1秒-r 1
  4. ファイル名はサムネイルの時間オフセットを表します-vsync 0 -frame_pts 1

これは現在、以下のようにコマンドに入力されます。

ffmpeg -copyts -i file.mp4 -vf "select=gt(scene\,0.06),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.%04d.png -f null

しかし、出力にエラーが発生します:

-vsync 0と-rを使用すると無効な出力ファイルが生成される可能性がある

[image2 @ 0x7f804500a000] アプリケーションはストリーム 0 の muxer に無効な非単調増加 dts を提供しました: 463 >= 463

これらはコマンドで心配すべきことでしょうか、それとも無視すべきでしょうか?

答え1

スナップ間に最低 1 秒の間隔が必要な場合は、それに合わせて選択式を変更する必要があります。-rこのコマンドで行われるのは、frame_pts によって形成されるファイル名に影響することだけです。(「無効なファイル」警告は無視できます。これは別のシナリオを意図したものです)。

ffmpeg -copyts -i file.mp4 -vf "select=eq(n\,0)+gt(scene\,0.06)*gte(t-prev_selected_t\,1),scale='min(1280\, iw):-1'" -r 1 -vsync 0 -frame_pts 1 snapshot.1280.%04d.png

関連情報