스크립트 함수 레퍼런스
모든 함수는 객체의 멤버 함수입니다. 예컨대 Open() 함수는 VirtualDub 객체의 멤버 함수이고, 다음과 같이 접근합니다.:
[code php]VirtualDub.Open(...);[/code]
- 경고 : 대부분 또는 모든 함수는 어떤 매개변수의 유효함을 알아낼 수 없다는 하에서 당신이 올바르지 않은 매개변수를 제공하면 데이터가 파괴될 수 있습니다. -10x-10 크기 변경 필터(resize filter)를 적용하는 것과 같은 어리석인 짓은 시도하지 마십시오.
객체 : Sylia
[code php]void dprint(int/string value);[/code]
이름 있는 문자열 또는 변수를 디버그 출력으로 인쇄한다.
[code php]void messagebox(string text, string caption); // (VirtualDub 1.6.2 이상)[/code]
메시지 박스를 화면에 표시한다.
NOTE: 메시지 박스는 VirtualDub 프로그램이 배치 또는 명령행 모드에서 실행 중이더라도 화면에 표시됩니다. 그래서 이것은 제작 스크립트에서는 사용하지 않는 것이 최선입니다.
[code php]string ToString(int); // (VirtualDub 1.6.2 이상)
string ToString(long); // (VirtualDub 1.6.2 이상)
string ToString(double); // (VirtualDub 1.6.2 이상)
string ToString(string); // (VirtualDub 1.6.2 이상)[/code]
수치 변수를 십진수 형식의 문자열로 변환합니다.
문자열-문자열 변환 버전은 아무것도 하지 않습니다. 그리고 문자열-문자열 변환 버전은 편의상 디버깅을 위해 임의 형식의 식을 화면에 표현하는 방식으로 존재합니다.
[code php]int Atoi(string s); // (VirtualDub 1.6.5 이상)
long Atol(string s); // (VirtualDub 1.6.5 이상)
double Atod(string s); // (VirtualDub 1.6.5 이상)[/code]
문자열을 정수(int), 긴 정수(long int), 배정도 실수(double)로 변환합니다. 문자열은 숫자 표현이 유효하지 않기 때문에 변환에 실패하면 알 수 없는 오류가 나타납니다. 이러한 함수는 명령행 매개변수 문자열을 수치 형식으로 변환하는 데 유용합니다.
객체 : VirtualDub
[code php]void SetStatus(string text);[/code]
VirtualDub 창 아래쪽에 있는 상태 표시줄에 나타낼 텍스트를 설정합니다.
[code php]void Open(string filename, int type, int xopts);
void Open(string filename, int type, int xopts, string xoptstring);[/code]
동영상 파일을 연다. 형식은 다음 가운데 하나입니다.
[code php] 0 자동
1 AVI
2 MPEG-1
4 스트립 AVI
5 AVI through AVIFile (Avisynth)[/code]
xopts 값이 0 이 아니면, VirtualDub 프로그램은 파일을 확장된 열기 옵션으로 연다. xoptstring 값이 없으면, 대화상자가 열리고, 그게 아니면 xoptstring 문자열이 바이너리 옵션 구조의 MIME BASE64 방식으로 인코딩된 문자열로 처리됩니다.
[code php]void Open(string filename, string type, int xopts);
void Open(string filename, string type, int xopts, string xoptstring); // (VirtualDub 1.5.5 이상)[/code]
이것은 우선권을 가진, 1.5.5 버전 이상에서 나타나는 Open() 함수의 형식입니다. 번호를 다루는 대신에, 그것은 형 이름을 다룹니다. 다음과 같은 형 이름이 있습니다.
[code php] "Audio/video interleave input driver (internal)"
"AVIFile/Avisynth input driver (internal)"
"Image sequence input driver (internal)"
"MPEG-1 input driver (internal)"[/code]
[code php]void Open(string filename); // (VirtualDub 1.6.5 이상)[/code]
그것은 파일 형식을 결정하는 자동 검출 모드를 항상 이용하는 Open() 명령의 더 간단한 형식입니다.
[code php]void Append(string filename);[/code]
추가적인 동영상 세그먼트(칸살)를 현재 파일에 덧붙입니다.
[code php]void Close();[/code]
현재 입력 파일을 닫습니다.
[code php]void Preview();[/code]
현재 설정 값으로 현재 파일의 미리보기를 실행합니다. 이것은 File > Preview 메뉴에 해당합니다.
[code php]void SaveAVI(string filename);[/code]
AVI2 형식으로 출력 파일을 만드는 처리 엔진을 실행합니다.
[code php]void SaveCompatibleAVI(string filename);[/code]
AVI1 형식으로 출력 파일을 만드는 처리 엔진을 실행합니다.
[code php]void SaveSegmentedAVI(string filename, int spacethresh, int framethresh);[/code]
다중 AVI 파일로 출력 파일을 만드는 처리 엔진을 실행합니다. spacethresh 값은 메가바이트 값으로 나타낸 파일의 최대 크기이고, framethresh 값은 최대 프레임 수입니다. framethresh 값이 0 이면 무시됩니다.
[code php]void SaveImageSequence(string prefix, string suffix, int mindigits, int format);
void SaveImageSequence(string prefix, string suffix, int mindigits, int format, int quality); // (VirtualDub 1.6.0 이상)[/code]
"prefix#suffix" 형식을 가진 파일명으로 이미지 시퀀스를 저장합니다. # 기호는 시퀀스 번호인데, 중간의 수치 값에 0을 덧붙인 형태입니다. format 값은 만들어지는 파일의 형식을 기술합니다.
[code php] 0 - Windows BMP
1 - TARGA
2 - JPEG (VirtualDub 1.6.0 이상)[/code]
[code php]void SaveWAV(string filename); // (VirtualDub 1.4d 이상)[/code]
WAV 형식으로 출력 파일을 만드는 처리 엔진을 실행합니다.
[code php]void RunNullVideoPass(); // (VirtualDub 1.6.5 이상)[/code]
동영상 전용 모드(video-only mode) 처리 엔진을 실행합니다. 그러나 출력은 버립니다(사용하지 않습니다). 이것은 사용 가능한 출력을 만들지 않는 과정(pass)을 분석하는 데 동영상 필터 또는 코덱을 사용할 때 유용합니다.
[code php]void Log(string output); // (VirtualDub 1.6.5 이상)[/code]
로그에서 정보 우선순위에 따라 항목을 출력합니다. VirtualDub 프로그램이 명령행에서 실행될 때, 텍스트는 또한 표준 출력으로 출력됩니다.
객 체 : VirtualDub.video
[code php]int GetDepth(int var);
void SetDepth(int var, int value);[/code]
var 변수가 0 이면, 이 함수들은 입력 색상에 영향을 주고, 그게 아니면 출력 색상을 다룹니다. GetDepth() 함수는 0 또는 1, 2 값을 반환합니다. SetDepth() 함수는 색상의 비트 값과 같은 16 또는 24, 32를 돌려줍니다. 나는 그것들이 왜 일치하지 않는지를 알지 못합니다.
당신에게 SetInputFormat() 및 SetOutputFormat() 함수 대신에 그것을 사용하라고 권고했습니다. 16/24/32비트 설정은 XRGB1555/RGB888/XRGB8888 형식에 각각 해당합니다.
[code php]void SetInputFormat(int format); // (VirtualDub 1.6.0 이상)
void SetOutputFormat(int format); // (VirtualDub 1.6.0 이상)[/code]
비디오 작업에 쓰일 입력 및 출력 형식의 우선권을 설정합니다.
[code php]0 자동 검출 / 입력과 같음
5 XRGB1555 16비트 555 RGB
6 RGB565 16비트 565 RGB
7 RGB888 24비트 888 RGB
8 XRGB8888 32비트 888 RGB + 투명도 (dummy alpha)
9 Y8 휘도만 적용 [16, 235]
10 YUV422_UYVY 4:2:2 YCbCr 인터리브, UYVY순
11 YUV422_YUY2 4:2:2 YCbCr 인터리브, YUY2순
14 YUV422_Planar 4:2:2 YCbCr 2차 평면 (YV16)
15 YUV420_Planar 4:2:0 YCbCr 2차 평면 (YV12/I420)
17 YUV410_Planar 4:1:0 YCbCr 2차 평면 (YVU9)[/code]
[code php]int GetMode();
void SetMode(int mode);[/code]
동영상 작업 모드 설정:
[code php] 0 직접 스트림 복사 (direct stream copy)
1 빠른 재압축 (fast recompress)
2 느리 재압축 (slow recompress)
3 전체 작업 모드 (full processing mode)[/code]
[code php]int GetFrameRate(int var);
void SetFrameRate(int var, int value);[/code]
value 값을 조절하여 특별한 프레임 레이트를 설정하거나 얻습니다.:
[code php] var=0 프레임 레이트 요소 골라내기. 1=모든 프레임
var=1 새로운 프레임 레이트 (마이크로초 / 프레임); 0=변화 없음, -1=기간이 일치함을 뜻함
var=2 0 이 아니면, TV 역화면이 가능[/code]
시 간이 같으면 TV 역화면(inverse telecine)으로서 골라내기를 하는 프레임 레이트 설정을 하지 않습니다. 그것은 작동하지 않습니다.
[code php]void SetTargetFrameRate(int hi, int lo); // (VirtualDub 1.5.2 이상)[/code]
64비트 유리수(rational fraction. hi 나누기 lo)로서 프레임 레이트 변환을 위한 대상 프레임 레이트를 설정합니다. hi 및 lo는 모두 *부호 없는* 수입니다. 21억 4748만 3648 부터 42억 9496만 7295까지인 값은 32비트 음수 값에 해당하므로 그냥 지나칩니다.
1.6.7 버전에서는, long 형으로 해석되는 큰 값으로서 모든 값을 양수로서 지정할 수 있습니다. 그리고 함수에 알맞은 int 값으로 자동으로 변환합니다.
[code php]int GetRange(int var);
void SetRange(int startMS, int endMS);[/code]
특별한 범위 값을 얻거나 설정합니다. var=0 이면 시작 오프셋으로 사용되며, var=1 이면 종료 오프셋으로 사용됩니다. 시작 오프셋은 앞에서부터 밀리초 단위로 측정되고, 종료 오프셋은 끝에서부터 밀리초 단위로 측정됩니다. 그래요, 이것이 어리석인 짓임을 나도 알아요.
종료 오프셋이 단지 오프셋이기 때문에 이 함수들에서 사용하는 동영상 스트림의 길이를 결정하는 것이 가능하지 않습니다.
[code php]void SetRangeEmpty(); // (VirtualDub 1.6.5 이상)[/code]
현재 선택한 부분을 청소하지만, 작업 영역의 시작/끝 지점에 영향을 주지 않는다. 이것은 UI에서 Edit > Clear Selection (Ctrl+D) 메뉴에 해당하며, 스크립트를 실행한 뒤 화면에 보여주는 그럴듯한 선택 영역 제거하는 데 유용합니다.
[code php]int GetCompression(int var);[/code]
현재 선택된 압축기(compressor)를 위한 변수를 검색합니다.:
[code php] var=0 압축기(compressor)를 위한 fccHandler ID를 반환합니다.
var=1 최대 키프레임 간격을 반환합니다.
var=2 품질 인수(quality factor)를 반환합니다. (0~10000).
var=3 데이터 전송률(data rate)을 반환합니다. (0=데이터 전송률 없음).[/code]
[code php]void SetCompression();
void SetCompression(string fccHandler, int keyrate, int quality, int datarate);
void SetCompression(int fccHandler, int keyrate, int quality, int datarate);[/code]
인수 없는 구문은 동영상 압축(video compression)을 꺼버립니다. 다른 두 구문은 동영상 압축기를 선택합니다. fccHandler가 정수 또는 문자열로 지정될 수 있음을 기억하십시오. 문자열이 4바이트보다 짧으면, 공백이 덧붙습니다.
[code php]void SetCompData(int length, string data);[/code]
동영상 압축기를 위한 개인 코덱 데이터를 설정한다. 동영상 압축(Video Compression) 대화상자에서 당신이 설정(Configure)을 클릭할 때 동영상 압축기는 변경됩니다. 이 데이터는 VirtualDub에서 분명치 않습니다. 그리고 단지 동영상 코덱에서 쓰이기도 합니다. length는 바이트로 나타낸 데이터 블록의 길이이고, data는 MIME BASE64 형식으로 인코딩된 데이터 블록입니다.
[code php]void EnableIndeoQC(int enableQC);[/code]
Ligos (이전에는 Intel) Indeo v4.x/5.x 동영상 코덱에서 빠른 압축(Quick Compress) 사용 가능 또는 사용 불가
[code php]void SetIVTC(int enableIVTC, int ivtcmode, int offset, int polarity);[/code]
TV 역화면(inverse telecine) 매개변수 설정.
[code php] enableIVTC: 0 이 아니면 IVTC 사용 가능
ivtcmode: 0=필드 기반, 1=프레임 기반
offset: IVTC 패턴을 위한 프레임 오프셋, -1=적합한 값
polarity: 0=필드 A 우선, 1=필드 B 우선. offset=-1 때는 무시한다.[/code]
VirtualDub 1.4c 버전에 버그가 있습니다. 그 버전에서 오프셋 값이 불린 자료형(0 또는 1)으로 캐스트되는 일이 발생했습니다. 이것을 불행하게도 IVTC에 알맞은 설정을 만드는 일을 불가능하게 만들었습니다. 그 문제는 1.4d 버전에서 고쳐졌습니다.
[code php]int width; // [VirtualDub 1.4d (12667) 이상]
int height;[/code]
읽기 전용 변수로 주어진 원본 동영상의 너비/가로(width) 및 높이/세로(height). 이 변수들은 원본 동영상이 존재하지 않으면 정의되지 않습니다.
객 체 : VirtualDub.audio
[code php]void GetMode();
void SetMode(int mode);[/code]
음향 작업 모드(audio processing mode)를 얻거나 설정한다.
[code php] 0 직접 스트림 복사 (direct stream copy)
1 전체 작업 모드 (full processing mode)[/code]
[code php]int GetInterleave(int var);
void SetInterleave(int enabled, int preload, int interval, int is_ms, int offset);[/code]
음향 인터리브 매개변수를 얻거나 설정한다.
[code php] 값 얻기 설정 설명
var=0 enabled 0 이 아니면 음향 인터리브는 사용 가능(enabled)
var=1 preload 밀리초 단위로 미리 읽기(preload)
var=2 interval 밀리초 또는 프레임 단위의 인터리브 간격(Interleaving interval)
var=3 is_ms 0 이 아니면 인터리브 간격은 밀리초 단위입니다. (is in milliseconds)
var=4 offset 오프셋(offset)을 바꿉니다. (단위: 밀리초)[/code]
[code php]int GetClipMode(int var);
void SetClipMode(int begin, int end);[/code]
음향 오려내기(audio clipping) 매개변수를 얻거나 설정합니다. begin (var=0) 변수는 동영상이 나왔을 때 음향이 바뀌도록 지정합니다. 이것은 거의 언제나 0 이 아닙니다. end (var=1) 변수는 음향이 동영상보다 길지 않도록 오려내도록 지정합니다. 이것 또한 거의 언제나 0 이 아닙니다.
[code php]int GetConversion(int var);
void SetConversion(int new_rate, int new_precision, int new_channels);
void SetConversion(int new_rate, int new_precision, int new_channels, int integral_rate, int high_quality);[/code]
음향 변환 매개변수를 얻거나 설정합니다.
[code php] var=0 (new_rate) Hz 단위의 새로운 샘플링 레이트(샘플링 속도, sampling rate); 0=변화 없음
var=1 (new_precision) 새로운 정밀도(precision); 0=변화 없음, 1=8비트, 2=16비트
var=2 (new_channels) 0=변화 없음, 1=모노, 2=스테레오[/code]
[code php]void SetSource(int mode);
void SetSource(string file);[/code]
음향 원본을 설정합니다. mode=0 이면 음향 없음, mode=1 은 음향 입력. 문자열 형식은 외부 WAV 파일을 읽어옵니다.
[code php]void SetCompression();
void SetCompression(int wFormatTag, int nChannels, int wBitsPerSample, int nAvgBytesPerSec, int nBlockAlign);
void SetCompression(int wFormatTag, int nChannels, int wBitsPerSample, int nAvgBytesPerSec, int nBlockAlign, int cbData, string data);[/code]
음향 압축 형식을 설정합니다. 첫 형식은 음향 압축을 깨끗이 지웁니다. 둘째 및 셋째 형식은 표준 Win32 WAVEFORMATEX 구조로부터 매개변수를 지정합니다.
[code php] wFormatTag 음향 압축 형식 지정
nChannels 1=모노, 2=스테레오.
wBitsPerSample 8 / 16 PCM. 다른 것으로 바꿀 수 있음
nAvgBytesPerSec 말 그대로 초당 평균 바이트 수
nBlockAlign 압축된 데이터 블록의 크기[/code]
개 인 데이터에 음향 압축기(audio compressor)를 사용할 때 주어지는 이 필드는 VirtualDub를 불분명하게 만듭니다.
[code php] cbData 데이터의 크기 (단위: 바이트)
data MIME BASE64 형식으로 인코딩된 데이터 스트링[/code]
일반적으로, 당신은 압축기를 조회하는 것 또는 VirtualDub 프로그램이 저장한 작업 스크립트(job script)를 찾는 것에 의해 이 필드를 유도하기를 바랍니다. 왜냐하면 음향 압축기(audio compressor)는 단지 지정된 값을 받아들이는 경향이 있기 때문입니다. 몇몇, 그러나 전부는 아닌, 개인적인 데이터 형식은 Win32 Platform SDK 안의 MMREG.H 파일로 문서화되어 있습니다.
[code php]void SetVolume(); // [VirtualDub 1.4d (12667) or later]
void SetVolume(int v); // [VirtualDub 1.4d (12667) or later]
int GetVolume(); // [VirtualDub 1.4d (12667) or later][/code]
현재의 음량(audio volume) 증폭 값을 얻거나 설정합니다. 음량은 8비트 고정 소수점 수로 나타냅니다. 256은 증폭 없음, 128은 절반의 음량, 512는 2배의 음량입니다. 빈 인수 형식의 SetVolume() 함수는 음량 증폭을 사용할 수 없도록 만듭니다.
객체 : VirtualDub.subset
부분 집합(subset)은 동영상 스트림 작업을 위한 편집 목록(edit list)입니다. 이것은 프레임 범위의 집합으로 이루어져 있습니다. 프레임 범위는 원본 스트림 안에 있는 작업될 수 있는
프레임을 가리키는 범위입니다. 프레임 번호는 0부터 시작합니다(zero-based).
1.5.4 이전 버전에서는, 부분 집합은 부득이 원본 순서대로 정렬된 범위(range)를 포함할 수밖에 없었습니다. 그래서 범위는 추가할 때마다 다시
정렬되었습니다. 1.5.5 버전부터는, 부분 집합은 복제본이나 원본과는 다른 순서로 반복되거나 이용되는 동영상 스트림의 일부를
허용하는 범위를 벗어난 것을 포함합니다. 최고의 호환성을 위하여, 범위는 항상 오름차순으로 추가하기를 권장합니다.
[code php]void Delete();[/code]
편집이 허용되지 않을 만큼 부분 집합을 지웁니다. 전체 원본 파일에서 작업합니다. 객체는 단지 시작/끝(start/end) 오프셋만을 작업합니다.
[code php]void Clear();[/code]
존재하는 어떤 부분 집합이라도 제거하고, 프레임을 가지지 않는 새로운 하나의 부분 집합을 만듭니다. 이 작업은 부분 집합 구성을 시작하려고
AddFrame()/AddRange() 함수를 호출하기 전에 이루어집니다.
[code php]void AddFrame(int start, int length);
void AddRange(int start, int length); // [VirtualDub 1.4.10 이상][/code]
부분 집합에서 프레임의 범위를 추가합니다. 부분 집합 프레임은 격리되어야 합니다. 그것들은 서로 겹치지도 접촉하지도 않아야 합니다. (예컨대, [0,5]와 [5,5] 등으로 하지 마십시오.) 1.5.5 버전부터는, 겹치는 범위 또는 허용 범위를 벗어난 범위가 허용됩니다. 그러나 이웃하는 범위는 여전히 피해야 합니다.
AddRange() 함수는 1.4.10 버전에서 더 나은 이름의 동의어로서 추가되었습니다. 그것은 AddFrame() 함수와 같으며, AddFrame() 구문은 지금 비난을 받습니다(deprecated).
[code php]void AddMaskedRange(int start, int length); // [VirtualDub 1.4.8 이상][/code]
부분 집합에서 마스크된 프레임의 범위를 추가합니다. 마스크된 프레임은 이전 프레임을 반복하는 프레임입니다. 이것은
손상된 데이터를 가진 것으로서 다른 용도로는 쓰이지 않는 프레임을 위한 위치 표시기로 쓰입니다.
객체 : VirtualDub.params (VirtualDub 1.6.1 이상)
[code php]string operator[](int index); // (VirtualDub 1.6.1 이상)[/code]
불러오기 (/i) 명령행 스위치로부터 매개변수를 검색합니다. 매개변수 색인은 0부터 시작하는데, 그래서 params[0]은 첫 매개변수가 됩니다. 매개변수가 가리키는 것이 존재하지 않으면, 오류가 발생합니다.
객체 : VirtualDub.project (VirtualDub 1.6.5 이상)
[code php]void ClearTextInfo(); // (VirtualDub 1.6.5 이상)[/code]
출력 AVI 파일과 연결된 텍스트 정보를 지웁니다. 기본적으로 주석을 입력
파일로부터 읽어와서 보존합니다.
[code php]void AddTextInfo(string fourcc, string text);[/code]
이를 테면 제작자 및 이름 문자열과 같은, 다음(subsequent) AVI 출력 파일에 사용할 텍스트 주석을 추가합니다. fourcc 값은 표준 AVI 텍스트 주석의 한 종류로서, 예컨대 "ISBJ" 및 "IART" 등과 같은 네 문자로 된 코드(FOURCC)여야 합니다. text 라고 지정된 두 번째 매개변수를 기억하십시오. 그것은 전혀 가공하지 않은(raw) 8비트 문자열인데, AVI 파일로부터 직접 복사됩니다. 그리고 두 번째 매개변수는 UTF-8 형식이 아닙니다. 그것은 AVI 형식 자체가 그러한 문자열로 코드 페이지 인코딩하여 표현할 방법을
전혀 가지고 있지 않기 때문입니다.
객체 : VirtualDub.video.filters
[code php]void Clear();[/code]
필터 목록에서 모든 필터 인스턴스(instance)를 제거합니다.
[code php]void Add(string filter); // [VirtualDub 1.4c 이하]
int Add(string filter); // [VirtualDub 1.4d 이상][/code]
동영상 필터 목록의 맨 아래에 지정된 필터의 새로운 인스턴스를 추가합니다.
VirtualDub 1.4d 버전부터 이 함수는 추가된 필터의 인스턴스 번호를
반환합니다.
객체 : VirtualDub.video.filters.instance[nFilt]
nFilt 값은 0 부터 시작하는, 필터 인스턴스의 변경된 색인 값입니다.
[code php]void Remove();[/code]
목록에서 선택된 필터를 제거합니다. 이것은 그 뒤에 오는 필터의 색인을 변경합니다.
[code php]int GetClipping(int var);
void SetClipping(int x1, int y1, int x2, int y2);[/code]
잘라내기 매개변수를 입력받는 필터를 얻거나 설정합니다. var 변수는 0부터 3까지의 범위를 가지며, 이것은 각각 x1 및 y1, x2, y2 변수에 해당합니다. 모든 값은 모서리(edge)로부터의 픽셀 값입니다.
[code php]... Config(...);[/code]
이것은 아마도 동영상 필터가 제공하는 함수입니다. 사용자 정의 매개변수를 가지고 있다면, 일괄처리 모드(batch mode)로 작업하기 위한 필터가 필요합니다. 그러나 이 구성원(member)을 강요할 어떤 구문도 없고, 매개변수 구문은 각각의 필터에 변화를 줍니다.