목차
앞에서는 FPS나 화면사이즈가 동일한 영상들을 이어붙이는 작업을 했었습니다.
[AviSynth] - AviSynth - 이어붙이기 (FPS,SIZE가 동일할 때)
그와 같은 경우에선 아무런 에러없이 작업을 마칠 수가 있었는데요 이번에 테스트해볼 내용은 FPS(초당 프레임수)가 다른 두 영상을 이어붙이기 할때도 아무런 문제가 없을른지 한번 보도록 하겠습니다.
먼저 movi1.avi영상과 girl1.avi 영상의 정보를 확인해보도록 하겠습니다.
FPS값이 다르다는걸 알 수 있습니다. 물론 원본의 비디오코덱도 서로 다르기는 하지만 전에도 말씀드렸듯이 AviSynth로 불러들일때는 무압축으로 불러들여지기 때문에 스크립트로 불러들여지는 클립의 코덱은 같다고봐야하므로 비디오코덱은 신경스지 않아도 됩니다.
자 그럼 이렇게 FPS값이 다른 영상을 뜯어서 이어붙이려고 할 때 어떤일이 벌어질까요? 먼저 스크립트를 만들어 봅시다.
clip1= trim(avisource("movie1.avi"),300, 1000)
clip2= trim(avisource("girl1.avi"),1800, 3000)
clip1+clip2
프레임레이트가 일치하지 않는다는 메세지가 뜨는군요. 사실 30FPS와 29.970FPS가 뭐 심한 차이가 있는것도 아니니까 그냥 좋은게 좋은거라고 넘어가줬으면 하는 작은 바램이 있지만서도 지가 못넘어가겠다는데 어쩌겠습니까. 고쳐봐야지요.
FPS를 컨트롤하는 필터에 대해서는 여기를 참고하시면 더 상세하게 알 수 있으실겁니다. 이 필터중에서 전 그냥 ChangeFPS 필터를 사용해서 해결해보도록 하겠습니다. 이 필터는 FPS를 입력된값과 맞추기 위해 프레임일 삭제하거나 복제하는 방법입니다. 엄밀히 말하자면 ChangeFPS가 올바른 방법이 아닐 수도 있는데 영어가 점점 눈에 가시로 보여서리... AviSynth 포스트가 늘어나는 과정에서 자연스레 알게되겠지요. 인생 뭐 별거 있습니까?
그래서 전 girl1.avi의 fps값을 30으로 Changefps하기로 결심했습니다. 따라서 스크립트는 이렇게 되겠지요.
clip1= trim(avisource("movie1.avi"),300, 1000)
clip2= trim(avisource("girl1.avi"),1800, 3000)
clip1+changefps(clip2,30)
clip2= trim(avisource("girl1.avi"),1800, 3000)
clip1+changefps(clip2,30)
댓글