노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.


필터 설정 함수

[code php]2:1 reduce        설정 함수 없음.
2:1 reduce (HQ)        설정 함수 없음.
3x3 average        설정 함수 없음.
blur            설정 함수 없음.
blur more        설정 함수 없음.[/code] [code php]box blurvoid Config(int width, int power);
brightness/contrast    void Config(int brightness, int contrast);[/code] [code php]deinterlace        void Config(int mode);[/code]

0=섞음(blend), 1=복제1(dup1), 2=복제2(dup2), 3=버림1(discard1), 4=버림2(discard2), 5=겹치지 않음(unfold), 6=겹침(fold)

[code php]emboss            void Config(int direction, int height);
field swap        설정 함수 없음.[/code] [code php]fill            void Config(int x1, int y1, int x2, int y2, int color);[/code]

x1...y2: 픽셀 입력, 색상은 24비트 RGB (HTML 코드처럼 입력. 다만 # 대신 0x 사용)

[code php]flip horizontally    설정 함수 없음.
flip vertically        설정 함수 없음.
general convolution    void Config(int c0, int c1, int c2, int c3, int c4, int c5, int c6, int c7, int c8, int bias, int clip);
grayscale        설정 함수 없음.[/code] [code php]hsv            void Config(int h, int s, int v);[/code]

h: 색조(Hue) 조정, 0...65535 -> 0~360 도
s: 채도 배율, 0...131072 -> 0~200 %
v: 명도 배율, 0...131072 -> 0~200 %

[code php]invert            설정 함수 없음.[/code] [code php]levels            void Config(int inputlo, int inputhi, int gammacorr, int inputmid, int outputlo, int outputhi);
           void Config(int inputlo, int inputhi, int gammacorr, int inputmid, int outputlo, int outputhi, int lumaonly);[/code]

모든 인수는 0~255 값을 가집니다. 다만, 24비트 고정 소수점 수로 표현되는 gammacorr 인수 제외.

만약 lumaonly 인수가 0 이 아니면 필터는 RGB 대신에 luma로 작동합니다.

[code php]logo            void Config(string logoFile, int xpos, int ypos, int alphaEnable, int premultDisable, int xj, int yj, int opacity);
           void Config(string logoFile, int xpos, int ypos, string alphaFile, int premultDisable, int xj, int yj, int opacity);[/code]

logoFile:     로고 이미지의 파일명

xpos, ypos:     원점으로부터의 위치 (픽셀) (xj/yj 참조)

alphaEnable:    0 이 아니면 픽셀 단위의 투명도 켜기. 투명도는 알파 채널에 바탕을 두고 있다.

premultDisable:    0 이 아니면 미리 곱해지지 않은 알파값(non-premultiplied alpha) 이용

xj:        수평 조정

0 - 왼쪽
1 - 가운데
2 - 오른쪽

yj:        수직 조정

0 - 위
1 - 가운데
2 - 아래

opacity:    완전한 로고 위의 알파 상수, 0...65536

[code php]null transform        설정 함수 없음.[/code] [code php]resize            void Config(int w, int h, int/string mode);
           void Config(int w, int h, int/string mode, int framew, int frameh, int color);[/code]

필터 모드:

0     "가장 가까운 (nearest)" 또는 "점 (point)"
1    "이중 선형 (bilinear)"
2    "쌍삼차 (bicubic)"[각주:1]
3    (정밀한 이중 선형. 문자열 없음)
4    (정밀한 쌍삼차, 문자열 없음)

[code php]rotate            void Config(int mode);[/code]

0=좌로 90도, 1=우로 90도, 2=180도

[code php]rotate2            void Config(int angle, int filtmode, int color, int expandbounds);[/code]

angle : 24비트 소수 (16777216 = 360도)

filtmode : 0=점(point), 1=이중 선형, 2=쌍삼차

[code php]sharpen            void Config(int power);
smoother        void Config(int threshold, int use_blur_pass);
threshold        void Config(int threshold);
temporal softener    설정 함수 없음.
(motion blur)
temporal smoother    void Config(int power);[/code] [code php]TV            void Config(mode);[/code]

0=Y, 1=I, 2=Q, 3=avg3x3, 4=avg5x5, 5=5x5+tmp, 6=chromaup, 7=chromadown

다른 필터

도널드 그래프트(Donald Graft)의 스마트 디인터레이서(smart deinterlacer; 스마트한 인터레이스 제거기)의 버전이 VirtualDub 프로그램에 포함되어 있습니다.

[code php]void Config(int motion_only, int blend, int luma_threshold, int scene_threshold);[/code]

내 자막 표시기:

[code php]void Config(int enable_supersampling, string script_filename);[/code]

다른 것들은 당신이 필터 제작자에게 요청해야 합니다.

객체 : VirtualDub.audio.filters (VirtualDub 1.5 이상)

이 하위 객체는 필터 그래프를 고급 음향 모드(advanced audio mode)로 제어합니다.

[code php]void Clear();[/code]

고급 필터 그래프에서 모든 필터를 제거합니다.

[code php]int Add(string name);[/code]

그래프에서 음향 필터를 추가합니다. 필터의 이름은 UTF-8로 인코딩됩니다. 필터의 ID#를 반환합니다.

[code php]void Connect(int srcfilt, int srcpin, int dstfilt, int dstpin);[/code]

원본 필터(srcfilt/srcpin)에 있는 출력 pin으로부터 대상 필터(dstfilt/dstpin)에 있는 입력 pin까지 두 필터 사이의 연락을 짓습니다. 두 필터와 pin 번호는 0부터 시작합니다.

객체 : VirtualDub.audio.filters.instance[nFilt] (VirtualDub 1.5 이상)

nFilt 인수는 0부터 시작하는, 필터 그래프에서의 음향 필터의 색인입니다.

[code php]void SetInt(int parmidx, int value);
void SetLong(int parmidx, int valuehi, int valuelo);
void SetDouble(int parmidx, int valuehi, int valuelo);
void SetString(int parmidx, string value);
void SetRaw(int parmidx, int length, string base64value);[/code]

음향 필터를 위한 설정 매개변수를 설정합니다.

"parmidx" 인수는 설정 매개변수의 색인입니다.

long 형(64비트 정수형) 및 double 형(64비트 부동 소수점형) 매개변수를 위해, 먼저 해석된 상위 32비트를 가지고 값은 2개의 32비트 정수로 나뉩니다. (the value is broken into two 32비트 integers, with the high 32비트s being passed first.)

문자열 매개변수를 위해, 문자열 값은 UTF-8 코드와 같은 유니코드 문자열로 인코딩됩니다.

raw (binary) 매개변수를 위해, "length" 인수는 인코딩되지 않은 길이를 바이트 단위로 참조합니다. 그리고 "base64value" 인수는 MIME BASE64 인코딩을 사용하여 인코딩된 바이너리 데이터입니다.

[code php]void SetLong(int parmidx, long value);        // [VirtualDub 1.6 이상]
void SetDouble(int parmidx, double value);    // [VirtualDub 1.6 이상][/code]

이 오버로드는 1.5 버전에서 같은 이름의 raw 메소드에 해당합니다. 그 함수들이 long 형 및 double 형 변수를 직접 다루는 경우는 제외합니다.

음향 필터 매개변수

그것들은 VirtualDub 1.5.6 버전에 내장된 음향 필터를 위한 설정 매개변수입니다.

필터 Index/자료형 설 명
Gain 0 (double) 이득 계수[각주:2] (-8.0 ~ 8.0)
New rate 0 (uint32) 새로운 진동수 (단위 Hz)
Ratty pitch shift 0 (double) 음조를 일정 비율로 옮김 (0.5 to 2.0)
Lowpass/highpass 0 (uint32)
1 (uint32)
진동수 분리 (단위 Hz)
필터 탭 (대략의 품질)
Resample 0 (uint32)
1 (uint32)
새로운 진동수 (단위 Hz)
필터 탭 (대략의 품질)
Stretch 0 (double) 샘플링 속도(샘플링 레이트) 늘이기 (0.25 ~ 4.0)

VirtualDub.jobs 파일 형식

VirtualDub 프로그램에서 작업(Jobs)은 일반적인 텍스트 형식(plain text format)의 스크립트로서 저장됩니다. 그 스크립트는 추가적인 제어 매개변수를 가진, 특별한 형식을 가진 텍스트 문자열입니다. 그 작업 제어 파일을 직접 편집하기보다 VirtualDub 프로그램이 그 작업 제어 파일을 변경하도록 하는 것이 낫습니다. 하지만 텍스트 편집기 또는 외부 프로그램에서 편집하는 것이 유용합니다.

모든 제어 행은 달러 기호($)로 시작하는 토큰을 가진 주석 행이며, 그 행에는 선택적으로 행마다 오직 하나의 제어 연산(control op)을 가진 인수가 뒤따릅니다.

[code php]// $numjobs 3[/code]

이 행은 3개의 작업이 이 파일 안에 있다고 VirtualDub 프로그램에 알려줍니다. 평범한 스크립트로서 작업 파일(job file)을 실행할 수 있으며, 스크립트가 아닌 모든 명령은 주석으로서 저장됩니다. 작업 제어(job control)에서 오류 제어가 어렵더라도 각각의 부분은 분할된 스크립트로서 실행되며, 하나의 스크립트 안에서 생긴 오류는 다른 것의 실행을 막도록 오류는 그 분할된 스크립트 사이에 격리됩니다.

각각의 파일에서 추가적인 작업의 형식은 다음과 같은 형식을 가집니다.

[code php]    // $job "Job 1"
    // $input "f:\mkrtest.avi"
   // $output "f:\test.avi"
   // $state 2
   // $start_time 01c01df3 c2eb68c0
   // $end_time 01c01df3 eb3d85b0
   // $script

   <스크립트 명령>

   // $endjob[/code]

작업($job) 및 입력 파일명($input), 출력 파일명($output) 토큰은 이스케이프 문자를 포함할 수 없는 문자열임을 기억하십시오. 또한 입력 및 출력 파일명은 화면 표시용으로 쓰입니다. 그것들은 스크립트와 일치해야 하며 그것들을 변경해서는 안 됩니다(they should match the script but changing them will not change the files used.).

상태 ($state) 토큰은 작업 항목의 실행 상태를 제어합니다.:

0 WAITING 작업은 당장에라도 실행될 수 있습니다.
1 INPROGRESS 작업이 현재 실행중입니다. 작업 파일을 읽어왔을 때 VirtualDub 프로그램에서 이 태그가 보이면 작업이 중단된 것으로 봐야 합니다. 그리고 작업은 ABORTED 상태로 바뀝니다.
2 DONE 작업이 완료됐고, 실행될 필요가 없습니다.
3 POSTPONED 작업은 이미 실행되었으나 사용자가 연기시켰습니다. 따라서 생략되어야 합니다.
4 ABORTED 작업은 시작되었으나 완료되지는 않았습니다. 사용자가 WAITING 상태로 바꾸지 않는 한 VirtualDub 프로그램은 이 작업을 다시 시도하지 않습니다.
5 ERR

이 작업을 실행하는 동안 오류가 발생했습니다. 사용자가 WAITING 상태로 바꾸지 않는 한 VirtualDub 프로그램은 이 작업을 다시 시도하지 않습니다.

$start_time 및 $stop_time 토큰은 각각의 주어진 작업이 시작하고 멈추는 시간을 포함합니다. 시간은 두 개의 32비트 16진수 값으로서 저장됩니다. 첫 번째 것은 Win32 FILETIME 구조체의 dwHighDateTime 값이고, 두 번째 것은 dwLowDateTime 값입니다.두 값에서 0 (Zero)은 그 항목을 위한 어떤 시간도 가리키지 않습니다. 시작 시간 없이 멈춤 시간을 가지고 있음은 이해할 수 없습니다(It makes no sense to have a stop time without a start time.).

현재의 Sylia 스크립트는 $script 및 $endjob 표지를 하나로 몰아서 다루고 있습니다. 이것은 스크립트가 마지막―모든 작업 매개변수 명령보다 뒤에―에 와야 함을 뜻합니다. 이 스크립트에서, 다중 작업을 포함한, 어떤 명령이라도 실제로 유효합니다. 만약 다중 작업이 순서대로 나열될 필요가 있다면, 이것은 아마도 도움이 될 것입니다. 만약 처음 작업이 실패하면 다음 작업들은 실행할 수 없습니다. 호출 당시의 환경이 무엇이든 간에 스크립트는 실행합니다. 그래서 스크립트는 모든 매개변수를 알맞게 설정할 필요가 있습니다. 그리고 스크립트는 변수가 어떤 특별한 방법으로 설정된 구성인지를 추정할 수 없습니다.

이 글은 스프링노트에서 작성되었습니다.

  1. "bicubic" 은 쌍삼차 또는 겹삼차로 불리며, 3차로 부르기도 한다. 이는 보간법(interpolation)에서 자주 쓰이는 삼차 보간법(cubic interpolation)이 쌍삼차 보간법(bicubic interpolation)이기 때문이다. [본문으로]
  2. Gain factor입력에 대한 출력의 비율을 가리키는 표현으로 여겨집니다. 이와 비슷한 표현이 전기학에서 이득 계수이기에 그렇게 옮겼습니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

스크립트 함수 레퍼런스

모든 함수는 객체의 멤버 함수입니다. 예컨대 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" 형식을 가진 파일명으로 이미지 시퀀스[각주:1]를 저장합니다. # 기호는 시퀀스 번호인데, 중간의 수치 값에 0을 덧붙인 형태입니다. format 값은 만들어지는 파일의 형식을 기술합니다.[각주:2]

[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)을 강요할 어떤 구문도 없고, 매개변수 구문은 각각의 필터에 변화를 줍니다.

  1. 이미지 시퀀스(image sequence) 및 시퀀스(sequence) 는 영화나 동영상의 한 장면을 뜻합니다. [본문으로]
  2. 최신 버전인 1.9.x 버전에서는 PNG 형식으로도 저장할 수 있습니다. 스크립트에서 지원하는지는 확인하지 못했습니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함