1

我搜索并尝试了一个 lua 脚本的可能解决方案,该脚本从一个目录中自动循环一些图像。结果应该是这些图像由 mpv(媒体播放器)以不同的持续时间启动。
我知道有一个自动加载脚本可以拍摄每张图像,但每张只有 1 秒。
https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autoload.lua

(在 windows 10 上使用 windows 的脚本目录:C:\Users\Username\AppData\Roaming\mpv\scripts)

4

1 回答 1

0

以下不是一个确切的答案,但略有相关。我经常需要有一个图像幻灯片,其中应该以可变的持续时间显示图像。最常伴有音频。这些解决方案对我有用。

Matroska 格式对此非常有帮助。在 mpv 中,我使用带有图像作为附件的 lua 脚本来完成它。然后在标签中给出持续时间列表。我不积极使用它,因为我无法分发给其他人。但相反,我发现以下方法更便携。

这就是概念。您创建一个 mjpeg 视频,其中包含您想要创建的所有 jpeg。然后你有一个可变帧速率的视频播放器播放。您指定每帧应显示多长时间。只有一些容器格式允许可变帧速率。Matroska 容器格式允许。因此,将您的 mjpeg 编码视频与时间信息一起包装在 matroska 容器中。您可以从 mjpeg 中提取 jpeg 图像而不会造成任何损失。

我在linux上使用了这些工具。我不确定它们是否适用于 Windows。它们是开源工具。

这使用了 matroska 容器格式的可变帧速率能力。

  • 按照您想要的顺序制作所有 jpeg 的 mjpeg 视频。您可以使用 ffmpeg 工具来做到这一点。注意文件命名。数字序列中的任何间隙对于 ffmpeg 来说都是不可原谅的。您可能需要为 mjpeg 编码视频指定容器格式。您也可以使用 .mkv 格式。我认为也可以使用其他格式。我使用的是 matroska 格式的 .mkv 格式。

  • 创建时序文件。请参阅 matroska 容器时间戳文件格式。我使用了版本 2 格式。在该格式中,您可以指定每帧的时间(以毫秒为单位)。每个图像帧一行。第一行是指定版本的标题

  • 使用 mktoolnix-gui 创建一个 matroska 容器。添加 mjpeg 编码的视频文件。指定时间戳文件。创建一个 mkv 文件。

该工具将从输入容器中提取 mjpeg 编码的视频。使用时间戳,它将创建一个新的 .mkv 容器。

  • 播放此 .mkv 容器将显示具有所需持续时间的图像。将来如果需要,您可以提取图像而不会从 mjpeg 编码格式中丢失任何内容。
于 2021-05-11T14:53:14.063 回答