以下不是一个确切的答案,但略有相关。我经常需要有一个图像幻灯片,其中应该以可变的持续时间显示图像。最常伴有音频。这些解决方案对我有用。
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 编码格式中丢失任何内容。