我有一堆个人文件,每个文件都希望通过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脚本需要多个变量时,这很有用。