如何向Avisynth脚本传递参数(如带路径的文件名)
向Avisynth脚本传递参数的方法
一、脚本内定义参数接收逻辑
使用Avisynth内置的ScriptArgs函数(2.6及以上版本支持,低版本可替换为Args),可以在脚本里定义需要接收的参数,还能设置默认值。示例脚本如下:
# 接收带完整路径的文件名参数,设置默认值备用 input_file = ScriptArgs("input", "default_video.mp4") # 可选:接收分辨率等其他参数 output_res = ScriptArgs("res", 1920) # 用参数处理视频 FFmpegSource2(input_file) Resize(output_res, output_res / 16 * 9)
二、调用脚本时传递参数
1. 借助Avisynth工具调用
比如使用avs2pipemod这类工具,通过-i参数传递键值对:
avs2pipemod -i "input=C:\完整路径\视频文件.mp4;res=1280" your_script.avs | x264 --demuxer y4m -o output.mp4 -
2. 用FFmpeg直接调用脚本
如果FFmpeg支持Avisynth输入,可通过URL查询字符串的格式传递参数:
ffmpeg -i "your_script.avs?input=C:\完整路径\视频文件.mp4;res=1280" output.mp4
3. 环境变量传递(适合批量场景)
脚本内通过GetEnv读取环境变量:
input_file = GetEnv("AVS_INPUT_FILE") FFmpegSource2(input_file)
Windows命令行调用时先设置环境变量:
set AVS_INPUT_FILE=C:\完整路径\视频文件.mp4 ffmpeg -i your_script.avs output.mp4
注意事项
- 参数包含空格时,要给参数值加引号,比如
input="C:\My Videos\test.mp4" - 多个参数用分号
;分隔,避免多余空格 - 低版本Avisynth替换
ScriptArgs为Args,用法逻辑一致
内容的提问来源于stack exchange,提问作者Pavel Kiselev
相关产品推荐
相关产品推荐

