从视频中提取帧并在图像上设置时间戳

从视频中提取帧并在图像上设置时间戳

我想从视频中每 10 秒提取一帧,并使用 GPX 轨迹对这些帧进行地理标记。

在我的 Windows 8 电脑上,我有提取帧(FFMPEG)、设置图像时间戳(ExifTool)和对图像进行地理标记(GeoSetter)的工具。

但是,我不知道如何将视频中的时间戳复制到捕获帧的时间戳。

答案1

该批处理文件每隔 X 秒提取帧一次,然后对其进行地理标记:https://gist.github.com/Krzysiu/345c37b08d79d5f47971167e33bb2bd3

它需要ffmpegexiftool。所有设置都必须手动填写(第 28-68 行)。

它的内部是如何运作的?

  1. 首先,它使用带有适当选项的 ffmpeg 过滤器提取帧(默认选项不起作用)
  2. 它为所有提取的帧设置相同的时间戳*。时间戳可能是手动提供的时间戳或视频文件中的任何标签/文件修改和创建时间
  3. 每张图片都应用了时间偏移。我使用了这种方法,因为在手动时间戳的情况下似乎没有简单的方法来偏移时间。
  4. 帧使用 gpx 文件进行地理标记。

* 实际上是所有匹配的文件%output_directory%\%frame_prefix%*.jpg,因此如果您首先提取 150 帧,然后将 100 帧提取到同一目录并使用相同的前缀,它将处理所有 150 帧,包括早期传递的 101-150 帧。

也许可以做得更快 - Exiftool 中的表达式会将文件索引乘以“每 X 秒一帧”中的 X。我不太擅长 Perl 表达式和 Exiftool,所以我这样做了。

相关内容