2014-01-29 71 views
6

我有一堆我想通過Avisynth運行的單個文件。但是,AVS文件只能創建一個視頻。據我所知,沒有辦法從命令行聲明一個變量的值。使用Avisynth創建多個視頻

我知道你可以創建一個腳本來生成一堆AVS文件,然後以某種方式將每個AVS文件轉換爲視頻。但是,由於Avisynth是一個腳本系統,這看起來很複雜。必須有某種方式通過腳本運行不同的視頻,對吧?

這樣做的最好方法是什麼?提前致謝。

回答

3

我從來沒有找到一種方法將命令行參數直接傳遞給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腳本需要多個變量時,這很有用。

+0

謝謝,我寫了一個Python腳本來做一些非常相似的事情。 –

+0

如果在主要avisynth腳本的任何函數中使用,請不要忘記聲明可變的全局變量 – NeronLeVelu