场景变化时以每秒至少 1 个的速度输出视频缩略图

场景变化时以每秒至少 1 个的速度输出视频缩略图

我对缩略图有以下要求:

  1. 场景变化应与上一次至少有 6% 的不同select=gt(scene\,0.06)
  2. 宽高比保留为 1280px 宽度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 snap.1280.%04d.png -f null

但是,我在输出中收到错误:

使用 -vsync 0 和 -r 可能会产生无效的输出文件

[image2 @ 0x7f804500a000] 应用程序向流 0 中的多路复用器提供了无效、非单调递增的 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

相关内容