Windows上的MLT融化幻灯片:无法控制输出视频的长度以及使用通配符的问题

问题描述

我正在批处理脚本中使用以下命令,希望最终以编程方式创建带有过渡的简单视频幻灯片

melt 131.jpg 132.jpg 133.jpg ttl=75 -attach crop center=1 -filter luma cycle=75 duration=25 -transition mix -consumer avformat:out.mp4 frame_rate_num=30 frame_rate_den=1

该命令大部分是MLT网站博客this命令的Windows改编版(缩放和转换图像的部分除外)。但是由于某种原因,运行此输出视频文件时长为25分钟!

我有两个主要问题:

a。如何正确控制视频中每个图像的持续时间?我已经对更改参数进行了相当多的实验,并且对它们的含义都有半点体面的理解(我是MLT的新手,但我认为仅凭FFMPEG便无法轻松地做到这一点)。我发现通过任何控制来减少持续时间的唯一方法是将输出帧速率增加到荒谬的数字(当然,这不是理想的选择,因为这浪费了大量的时间和精力,而且仍然无法真正解决问题)问题)。

b。如何在Windows的文件夹中使用通配符输入所有.jpg文件?我尝试添加* .jpg,但是没有用,而且我不知道如何在批处理脚本中进行其他操作(我尝试使用以下代码文件名作为变量获取,但是我无法使字符串连接正常工作,因为它仅输出最终文件名)

set files=
for /r %%i in (*.jpg) do (
    echo %%i
    set files=%files% "%%i"
)
echo %files%

谢谢您的任何建议!

解决方法

更改

set files=%files% "%%i"

CALL set "files=%%files%% "%%i""

这使用辅助过程来连接文件名。

我不知道您要解决的其他问题。

,

当您指定.jpg文件时,melt会在内部自动选择一个生产者。根据您的环境和版本,该生产者将是qimage或pixbuf生产者。

两个生产者都提供“ ttl”参数来指定图像序列的图像持续时间(以帧为单位) https://mltframework.org/plugins/ProducerQimage/#ttl

https://mltframework.org/plugins/ProducerPixbuf/#ttl

在您链接的示例中,使用特殊语法创建图像序列:photos/.all.jpg ttl=75

在您的示例中,您指定一个特定的文件名。因此,不会创建图像序列。而是,为每个文件创建一个新的生产者。生产者的默认长度是15000帧。

https://github.com/mltframework/mlt/blob/master/src/framework/mlt_producer.c#L102

可以在命令行中指定长度。

melt 131.jpg length=100 132.jpg length=100 133.jpg length=100