我對縮圖有以下要求:
- 場景變化應該與上次至少有 6% 的差異
select=gt(scene\,0.06)
- 寬高比保留在 1280px 寬度
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 空
但是,我在輸出中收到錯誤:
使用 -vsync 0 和 -r 會產生無效的輸出文件
[image2 @ 0x7f804500a000] 應用程式向流 0 中的複用器提供了無效的、非單調遞增的 dt: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