XENIX(제닉스)

AviSynth - 19. 화면분할 (화면크기,FPS가 다른 경우)

AviSynth 2010.09.11 댓글 XENIX

목차

    테스트를 위해서 아래 4개의 파일을 준비했습니다. 일단 해상도는 전부 다르구요 프레임레이트만 2개씩 동일합니다.
    이제 단계별로 스크립트를 만들어보겠습니다. 프로그래밍에 능숙하신 분이라면 몇단계를 묶어서 스크립트를 작성하실 수도 있겠지만 전 프로그래밍에는 재능이 없어서 그냥 베이직수준으로 스크립트를 만들어보겠습니다.

    a=avisource("001.avi")

    a_width=width(a)
    a_height=height(a)
    a_fps=framerate(a)

    먼저 001.avi 파일을 로드하여 a라는 변수에 할당했습니다. 그리고 width(), height(), framerate()라는 AVS 스크립트를 이용하여 001.avi 클립의 속성중에 가로값,세로값 그리고 FPS값을 받아내서 이를 a_width, a_height, a_fps라는 변수에 할당하도록 했습니다.


    a=avisource("001.avi")

    a_width=width(a)
    a_height=height(a)
    a_fps=framerate(a)

    b=avisource("002.avi",audio=false).BicubicResize(a_width,a_height).ChangeFPS(a_fps)
    c=avisource("003.avi",audio=false).BicubicResize(a_width,a_height).ChangeFPS(a_fps)
    d=avisource("004.avi",audio=false).BicubicResize(a_width,a_height).ChangeFPS(a_fps)

    그리고 002.avi 영상을 로드하고 화면분할을 하면 어차피 첫번째 영상말고는 오디오는 필요없으므로 오디오를 False 시킵니다.  이 영상을  Bicubicresize() 필터를 이용하여 001.avi에서 받아낸 가로,세로크기대로 리사이즈를 하도록 하고 ChangeFPS() 필터로 fps값을 001.avi의 fps값과 일치시켜서 이를 변수 b에 할당합니다. 003.avi ,004.avi 파일도 마찬가지로 진행시킵니다.


    a=avisource("001.avi")

    a_width=width(a)
    a_height=height(a)
    a_fps=framerate(a)

    b=avisource("002.avi",audio=false).BicubicResize(a_width,a_height).ChangeFPS(a_fps)
    c=avisource("003.avi",audio=false).BicubicResize(a_width,a_height).ChangeFPS(a_fps)
    d=avisource("004.avi",audio=false).BicubicResize(a_width,a_height).ChangeFPS(a_fps)

    clip1=stackhorizontal(a,b)
    clip2=stackhorizontal(c,d)

    stackvertical(clip1,clip2).BicubicResize(640,480)

    a,b 그리고 c,d를 각각 수평으로 배치시킨 후 이를 수직으로 배치하여 전체 사이즈를 640 x 480으로 조절하였습니다.

    저장된 스크립트를 VirtualDub으로 불러온 후 Audio / Video 모두 Full processing mode상에서 Compression 메뉴를 이용하여 적절한 코덱을 선택하여 인코딩하시면 됩니다.


    최종결과물


     

    댓글