Lua脚本 - 在文件夹中为每个文件设置不同的时长

我搜索并尝试了许多Lua脚本的解决方案,希望自动循环播放文件夹中的图片。结果是这些图片通过mpv播放器以不同的持续时间播放。

我知道有一个自动加载脚本,但每个图片只会播放1秒钟。

https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autoload.lua

(在Windows 10上工作,并且脚本目录为:C:\Users\用户名\AppData\Roaming\mpv\scripts)

点赞
用户15897708
用户15897708

以下并不是确切的答案,但与此略微相关。我经常需要一个图像幻灯片,其中图像应该以不同的持续时间显示。通常附带音频。以下解决方案适用于我。

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-11 14:53:14