'Avisynth/번역'에 해당되는 글 3건

  1. 2009.05.20 Avisynth Wiki 2 - 시작하기
  2. 2009.05.14 Avisynth Wiki 1 - 첫걸음 4
  3. 2009.03.22 aWarpSharp
2009. 5. 20. 22:30
본 포스트는 http://avisynth.org/mediawiki/Getting_started 의 글을 번역(의역)한 포스팅입니다.
독자의 편의를 위하여 국내사정을 감안한 뒤 추가하거나 제거한 부분이 있습니다.
일부 용어가 옳지 않게 사용 되었을 수 있습니다. 리플로 지적 부탁드립니다.

시작하기

 처음으로 할 일은 "스크립트"라고 불리는 특별한 명령어가 들어있는 간단한 텍스트 파일을 만드는 일입니다. 이 명령어들은 하나 혹은 하나 이상의 동영상들과 필터들이 원하는대로 결과물을 내어 주도록 만듭니다.

 하나의 스크립트 파일을 다 만드셨다면, VirtualDub이나 MeGUI같은 인코딩 툴을 실행해서 (이 이외에도 엔젤 인코더라는 프로그램이 avs를 지원합니다만, 보통 버덥 모드나 메구이를 사용하는게 요즘 추세입니다)avs 파일을 열어 봅시다.

 avs 파일을 열면, 이제서야 잠자던 AviSynth가 깨어나 일을 시작합니다. avs파일을 받은 프로그램은 AviSynth에게 스크립트의 내용을 해석 해 줄것을 부탁하고, Avisynth는 그 부탁 받은 스크립트를 바탕으로 동영상을 불러오고, 필터를 적용해서 압축되지 않은 동영상 형태로 프로그램에 돌려줍니다.

 사실 쉬운 이해를 위해서 위처럼 쓰긴 했습니다만, Avisynth는 따로 실행되는 프로그램이 아니라, 완전히 Background에서 실행되는 프로그램입니다. (Background를 설명하면 운영체제에 대한 설명까지 덧붙여야 하므로, 건너 뜁니다. 모르시는 분들은 검색해 주세요)
 이런 저런 이유로, 인코딩 프로그램들은 Avisynth를 통한 영상을 하드디스크 어딘가에 붙어있는 AVI파일을 바로 불러온것으로 인식합니다.

아날로그 편집 (Linear Editing)
 
 Avisynth로 할수 있는 가장 간단한 작업은 영상 자르기등의 Virtualdub에서 하던 작업입니다.
 이 스크립트는 쉽습니다. 복잡한 필터나 스크립트도 나오지 않으니 걱정하실 필요도 없습니다.

 연습을 위해서 test.avs 파일을 만들고, 그 파일 안에 다음과 같이 써 봅시다

 Version

 test.avs 파일을 WMP나 KMP, 곰플등으로 재생 해 보면 Avisynth의 버전 정보와 저작권에 관한 내용의 10초짜리 영상을 볼 수 있습니다.

 여기서 Version 은 소스 필터라고 부릅니다.
 이 필터는 수정 할 동영상을 불러오는 역할을 합니다.
 Avisynth 스크립트 (이하 avs, 혹은 avs 스크립트라고도 적겠습니다)의 첫줄에는 소스 필터가 와야 합니다. 동영상을 불러와야 그걸 편집하겠지요 :D
 (역주 : 아직은 그런 고급 기능을 쓸 리 없겠지만, 소스 필터 위에 다른 소스가 오는 경우가 있습니다.)

 이제, 두번째줄에 무언가 더 써 넣어 봅시다. 이렇게요
Version
ReduceBy2

 다시 test.avs 파일을 플레이어로 열어 봅시다. 아까처럼 버전과 저작권 안내가 뜹니다. 하지만 아까의 영상의 반만한 크기로 영상이 뜰겁니다.

 ReduceBy2는 "Transformation filter"라고 부릅니다. 이전 영상을 어떻게 어떻게 바꿔주는 필터라는 의미입니다. 버츄얼덥에서 필터를 사용하듯, 이런 Transformation filter를 여러개 사용 할 수 있습니다.
 이제 다른 필터를 써 봅시다. 점점 검은색으로 변하면서 끝나는 fade-out 영상을 만들어 보도록 합시다. 세번째줄에 다음과 같이 넣어 주세요

Version
ReduceBy2
FadeOut(10)

 다시 열어봅시다. 처음 9초는 아마 처음과 똑같을 겁니다. 하지만 마지막 1초에서는 부드럽게 검은색으로 변하면서 끝나는 걸 볼 수 있습니다.
 잘 보시면 10이라는 숫자를 가지고 있는걸 볼 수 있는데, 여기서 10은 fadeout이 시작되는 프레임의 번호를 말합니다.
 
 근데,,, fadeout 효과를 보기까지 너무 오래 걸리죠. 기다리는 시간을 줄여봅시다.
 이제 120~150프레임만 남길겁니다. 나머지는 버려야죠.
 (역주 : 프레임에 대한 개념이 없으시면 앞으로 이해하시는데 많은 애로사항이 꽃핍니다. 검색이나 다른 방법을 통해 꼭 동영상의 원리와 프레임에 대한 개념을 습득 하고 이 글 혹은 다른 인코딩 관련 글을 읽으시길 바랍니다. 모르셔도 읽으실 순 있지만 이해 하실지는... 모르겠습니다.)

뭐 하여간, 잘라 봅시다.
Version
ReduceBy2
# 앞의 119개의 프레임을 잘라내고, 120~150프레임만 유지합니다.
# (119개를 잘라내는 이유는 Avisynth는 첫프레임의 번호를 0으로 두기 때문입니다.)
Trim(120,150)
FadeOut(10)

 이 예제에서는 # 가 처음으로 등장했습니다.
 #는 주석을 의미합니다.
 #가 사용된 줄은 전부 주석 처리 되며, 주석처리 된 줄은 Avisynth가 아예 무시합니다.

 이제 다시 Trim을 살펴 봅시다. fadeout은 10이라는 하나의 변수를 주었지만, trim은 120,150 이라는 반점(콤마, ',')로 구분된 두개의 변수를 주었지요.
 Trim에서 두개의 변수를 준다는 의미는 첫번째 변수 프레임 ~ 두번째 변수 프레임 까지의 영상을 제외한 다른 부분을 모두 잘라낸다는 의미입니다.

 그런데... 만약에 처음 119프레임만 제거하고 싶다면 어떻게 해야할까요?
 여기서 0 이 등장합니다.
 이건 따라하지 말고 어떻게 쓰이는지만 한번 구경 해 보세요.
 
Version
Trim(120,0)

 여기서 0의 의미는 "끝까지" 입니다.
 끝까지 유지 한다고 했으니, 앞의 119프레임만 제거하고, 뒷부분은 자르지 않습니다.

 여기서 하나 문제가 생깁니다. Trim을 쓰면 자르기 쉽다지만, 자르려는 위치가 몇 프레임인지 알 도리가 없지요.
 두가지 방법이 있습니다. 화면에 프레임 번호를 표시해주는 ShowFrameNumber 필터를 쓰거나, 버츄얼덥 같은 영상의 현재위치의 프레임 번호를 알려주는 프로그램을 사용하면 됩니다.
 (역주 : 사실 AvsP를 더 추천합니다. Trim 결과를 바로 확인 할 수 있거든요)

 이제 Version 보다 더 유용한 필터인 AVISource를 써 보도록 합시다.
 AVISource는 AVI 파일을 읽어오는 기능을 합니다.
 만약에 가지고 있는 AVI 파일이 있다면, 바로 이 필터로 읽어 올 수 있습니다.

AVISource("d:\capture.avi")  # 따옴표 안은 하드디스크의 Avi 파일 경로를 넣습니다.
ReduceBy2
FadeOut(15)
Trim(120,0)

 이 한줄의 소스는 2GB 이상의 영상을 지원하지 않는 프로그램에서 2GB가 넘는 영상을 감상하거나, 편집할 때 유용하게 사용 할 수 있습니다.


디지털 편집 (Non-Linear Editing)
이제 재밌는 부분을 해봅시다. AVS 파일을 다음과 같이 만드세요

StackVertical(Version, Version)

 이제 열어봅시다.
 결과를 보면 버전 전보가 위아래로 두개 나옵니다.
 StackVertical 필터는 두개의 영상을 불러와서 상하로 합치는 역할을 합니다.
 이 스크립트에서 Version 필터는 두번 불러와집니다. 각각 한번의 Version 정보를 보내지요.
 이 두 정보 (영상)을 StackVertical 이 합치는겁니다.
 (역주 : 말로 설명하기 어려우니 직접 한번 해보세요, Version 대신 AVISource()등을 넣어도 됩니다. 다만 각각 다른 영상을 불러오려면 두 영상의 가로 사이즈가 같아야 합니다)

 이런 종류의 필터 중에서 가장 유용하게 쓰이는 필터중에 UnalignedSplicer가 있습니다.
 이 필터는 비디오의 끝과 끝을 이어줍니다.
 이제 3개의 AVI 파일을 이 필터로 한번 이어봅시다.

UnalignedSplice(AVISource("d:\capture.00.avi"), \
 AVISource("d:\capture.01.avi"), \
 AVISource("d:\capture.02.avi"))

 StackVertical 필터나 UnalignedSplice 둘다 60개 까지 합칠 수 있습니다.
 
 하나 팁을 드리자면, + 부호를 쓰면 좀 더 편하게 UnalignedSplice 필터를 쓸 수 있습니다.

 예를 하나 들어보자면, 아래 스크립트는 방금 해본 스크립트와 같은 결과가 나옵니다.

AVISource("d:\capture.00.avi") + \
 AVISource("d:\capture.01.avi") + \
 AVISource("d:\capture.02.avi")
(참 짧아지네요 ㅡ,ㅡ)

 이제, 여러개의 동영상을 하나의 AVI 파일로 만드는 방법을 알았습니다. 하지만 소리가 별도의 WAV파일로 저장되었다면 어떻게 해야할까요? 합칠 순 있을까요?

 아래처럼 해보세요
AudioDub(AVISource("d:\capture.00.avi") + \
 AVISource("d:\capture.01.avi") + \
 AVISource("d:\capture.02.avi"), \
 WAVSource("d:\audio.wav"))

(역주 : 사실 음성의 경우에는 싱크 문제등으로 인하여 영상만 따로 인코딩 한 뒤에 Muxer로 합쳐주는게 일반적인 인코딩 방법입니다. 고로 이 방법은 쓸데가 없다. 고 생각하셔도 무방합니다.)

'Avisynth > 번역' 카테고리의 다른 글

Avisynth Wiki 1 - 첫걸음  (4) 2009.05.14
aWarpSharp  (0) 2009.03.22
Posted by 아스쿨
2009. 5. 14. 10:56
본 포스트는 http://avisynth.org/mediawiki/First_script 의 글을 번역(의역)한 포스팅입니다.
독자의 편의를 위하여 국내사정을 감안한 뒤 추가하거나 제거한 부분이 있습니다.


첫걸음

처음으로 Avisynth를 다운받고, 설치 했다면, 가장 기초적인 Avisynth 스크립트를 써 봅시다.

AviSource("c:\folder\myclip.avi")


 뭐라도 좋으니 텍스트 편집기(메모장, editplus등... AvsP를 추천합니다)를 하나 열어서 위 내용을 붙여 넣고 myclip.avs로 저장 해 봅시다. (따옴표 안의 내용은 적절하게 컴퓨터 안의 avi 파일의 경로로 수정합시다)
 바르게 위 소스를 입력하고, 제대로 경로를 지정 했다면, 윈도우 미디어 플레이어, KMplyaer, 곰플레이어등 대부분의 프로그램에서 avs 파일을 열면 스크립트가 실행 됩니다.
 물론 유명한 동영상 편집 툴인 VirtualdubMOD나 VirtualDub에서도 avs 스크립트를 실행 할 수 있습니다.
 결론적으로, 지금 만든 avs라는 확장자를 가진 텍스트 파일이 동영상이 된겁니다.

 세상에는 AVI 파일 말고도 정말 다양한 동영상 확장자와, 코덱들이 있습니다. 각각의 동영상 코덱들은 동영상을 재생하는데 서로 다른 방법을 사용하기 때문에, AVI 파일을 불러오는 AVISource 라는 명령어로는 MPEG(주로 DVD에 사용됩니다)파일을 읽어 올 수 없습니다.
 MPEG파일은 AVI와 다르게 DirectShowSource 라는 명령어로 불러 올 수 있습니다.
 이렇게 한번 써보세요.

DirectShowSource("c:\folder\myclip.mpg", fps=25)

 사실 MPEG파일을 불러올때는 DGDecode라는 DirectShowSource보다 더 좋은 방법이 있습니다만, 아직 처음이므로 DirectShowSource 로 만족하도록 합시다.
 
 한번 Frameserver를 통한 동영상 인코딩에 (Anisynth를 통한 인코딩을 의미합니다) 맛들이게 되면, 시간가는줄 모르고 예전 동영상을 꺼내 인코딩 하실겁니다. 속는셈 치고 한번 해보시고, 스스로 필터나 AniSynth 매뉴얼을 작성 해 보세요.


'Avisynth > 번역' 카테고리의 다른 글

Avisynth Wiki 2 - 시작하기  (0) 2009.05.20
aWarpSharp  (0) 2009.03.22
Posted by 아스쿨
2009. 3. 22. 15:57
다운로드 : http://ziquash.chez-alice.fr/ 혹은





 아래 내용은 aWarpSharp 필터와 동봉된 readme 파일을 번역 한 것입니다.
 제가 아직 인코딩 초보라 틀린 내용이 있을 수 있으니 틀린 부분이 있다면 리플로 지적 부탁드립니다.


aWarpSharp - Avisynth 2.5용 날카롭게 필터 - beta1

이 필터는 새로 개발한 필터입니다.
ISSE를 쓸 수 있는 CPU가 필요하며, YV12인 영상에 적용됩니다.

문법:
  aWarpSharp(float "depth", int "blurlevel", float "thresh", int "cm")


depth & blurlevel :
 이 기능은 Vdub의 WarpSharp 필터와 비슷합니다.
 필요한 만큼 수치를 조정하시면 됩니다.
 blurlevel은 CPU를 좀 더 많이 사용하지만, 작업 시간을 줄입니다.
 기본값 : 16.0, 2

역주) depth는 샤픈의 강도를 조절하는 옵션이고, Blurlevel은 샤픈 뒤의 계단현상 등을 없애기 위해 문지르는(blur)강도 입니다. blur는 기본값이면 충분하고, depth는 경우에 따라 14, 16, 18정도가 적당 한 것 같습니다.

thresh :
 이 옵션은 샤픈을 진행할 범위를 지정합니다. 실수값을 입력하며, 1.00이 100%입니다. 최고의 결과를 얻기 위해서는 기분으로 두시는걸 추천합니다. 이 옵션값을 조정 하실 때에는 가장자리를 왜곡하거나 효과가 없을 수 있다는걸 염두에 두고 조정 하시기 바랍니다.
기본값 : 0.5 (50%)

역주) 제작자는 기본값을 쓰는걸 강력하게 권하고 있습니다. 딱히 다른 수치를 쓸 필요도 느끼지 못하구요.

cm : (색상)
cm=0 : 색상 관련 필터링을 하지 않습니다.
cm=1 : 색상, 명암에 워프를 적용합니다(추천)
cm=2 : 색상에만 워프를 적용합니다.
기본값  : 2

역주)제작자와 저는 2가 가장 나아 보이지만, 1을 권장하는 분들도 계십니다. 취향에 따라 선택하세요

고급 설정은 필요하지도않고, 문서화 되어 있지도 않습니다.
(실제 쓰지도 않고, 누가 쓴다고 더 좋을 것 같지는 않습니다)

 질과 속도에 관해서 :
 aWarpSharp는 새로 개발한 고성능 워프샤프닝 필터입니다. 여기서 새로 개발했다는 의미는 이미 개발된 다른 필터를 수정하거나, 묶은 필터가 아닌, 아예 새로 개발했다는 의미입니다.
 이 필터의 소스는 대부분 iSSE에 최적화 되어 있습니다. 직접 확인해 보세요.
 아마 640X480, 25fps정도의 동영상에 이 필터를 쓰는데 550mhz정도의 CPU가 필요할겁니다. 좀 그런 예이긴 하지만 40fps의 PAL MPEG-2 영상에 디인터레이싱, 워프 샤프닝을 MPEG2Dec("dvd.d2v").aDeInt().aWarpSharp() 로 하면 1.4ghz정도의 CPU를 사용 할 것입니다.

 aWarpSharp는 제 CPU(개발자의 CPU)인 애슬론XP에 최적화 되어 있습니다, 하지만 요즘 나오는 대부분의의 CPU에서 동작하고, 사양만 좋다면 빠른 속도를 낼겁니다.
 
 이 글을 읽으시는 분이 제 마지막 필터를 즐겁게 사용 해 주셨으면 좋겠습니다. 전 이 코드를 짤때가 다른 어떤 코드를 짤때보다 즐거웠습니다.

 지난 몇달간 짠 이 필터를  모든 애니메이션 팬과 모든 Avisynth 유저를 위해 바칩니다.
 그럼 안녕히 ^^.

MarcFD

2003년 2월 5일- Copyright (C) 2003 MarcFD

'Avisynth > 번역' 카테고리의 다른 글

Avisynth Wiki 2 - 시작하기  (0) 2009.05.20
Avisynth Wiki 1 - 첫걸음  (4) 2009.05.14
Posted by 아스쿨