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