我有一堆个人文件,每个文件都希望通过Avisynth运行。但是,一个AVS文件只能创建一个视频。据我所知,没有办法从命令行声明变量的值。

我知道您可能可以创建一个脚本,该脚本生成一堆AVS文件,然后以某种方式将每个AVS文件转换为视频。但是,由于Avisynth是脚本系统,因此这似乎很复杂。必须有某种方法可以通过脚本运行不同的视频,对吗?

做这个的最好方式是什么?提前致谢。

最佳答案

我从未找到将命令行参数直接传递给AVS脚本的方法。
快速生成脚本是我能够使其正常运行的唯一方法。

我知道这不是您要寻找的答案-尽管如此,还是有两种生成脚本的方法:

模板脚本

当我有一个AVS脚本时,使用此参数,唯一更改的参数是源输入文件。

我有一个脚本template.avs,它需要一个包含源视频完整路径的变量(v)。然后,批处理脚本只需在行中为每个视频文件添加变量,类似于:

@echo off
if "%1" == "" (
    echo No input video found
    pause
    GOTO :EOF
)
set pth=%~dp0

:loop
IF "%1"=="" GOTO :EOF

echo v="%1">"%pth%_tmp.avs"
type "%pth%template.avs">>"%pth%_tmp.avs"

:: Do whatever you want with the script
:: I use virtualdub...
"%vdub%" /i "%pth%Template.vdscript" "%pth%_tmp.avs"

del "%pth%_tmp"

SHIFT
GOTO loop

这使我可以简单地将几个源视频拖放到批处理中。

进口

使用Import指令,可以将所有变量声明外部化到其自己的脚本中。
Import("variables.avs")

当模板AVS脚本需要多个变量时,这很有用。

07-27 21:25