오르카의 아틀리에

최근에(한 2개월 정도 되었지만) 나름 이름있는 스트리머의 영상을 편집하는 일을 하고 있다. 팬심으로 시작한 일이지만, 영상 편집이라는 분야를 처음 해보는 것이었고, 유튜브에 돌아다니는 다른 퀄리티 있는 영상을 보고 있으면 한번 이런 스킬들을 배워두는 것이 좋을 것같아서 열심히 배우고는 중이다.


이건 편집을 시작하고 나서 초반에 알게 된 사실인데, 건네받은 녹화파일이 'Premiere Pro'로 Import된 후에 자꾸 음성과 영상의 싱크가 어긋나는 현상이 발견되었다. 동영상 플레이어에서는 정상적인 것을 보니 파일에는 문제가 없었다. '이유가 뭐지?' 하고 찾아보다가 알게 된 사실과 해결법을 공유해볼까 한다.


원인은 VFR(Variable Frame Rate)에 숨겨져 있다

원인을 먼저 알고가자면 바로 '가변 프래임 레이트'(이하 VFR)에 있다. VFR은 영상을 압축하는 방법중 하나인데, 반대되는? 비교되는 방법으로는 '고정 프래임 레이트'(이하 CFR)가있다. 일단 VFR이 뭔지 위키피디아에 물어보자


Variable frame rate (or VFR) is a term in video compression for a feature supported by some container formats which allows for the frame rate to change actively during video playback, or to drop the idea of frame rate completely and set individual timecode for each frame.[1][2] VFR is especially useful for creating videos of slideshow presentations or when the video contains large amounts of completely static frames, as a means of improving compression rate, or if the video contains a combination of 24/25/30/50/60 FPS footages and the creator or editor of the video wishes to avoid artifacts arising from framerate-conversion.

라고 한다. 말그대로 가변적인 프레임 주기를 가질 수 있는 형식이다. VFR와는 다르게 CFR은 영상의 처음부터 끝까지 같은 프레임 레이트를 가지게 된다.


이런 특성 때문에 이 부분은 영상 크기에 많은 영향을 미치게 되는데 일반적으로 VFR을 사용하는 영상이 CFR를 사용하는 영상보다 크기가 작다. 그것도 그런 것이 움직임이 적은 부분은 프레임 레이트를 낮추어 영상 용량을 절감하는 효과가 있기 때문이다.


그래서 일반인이라면 CFR보다 VFR을 좀 더 빈번하게 사용한다. 인터넷 라이브 스트리밍이나 화면녹화, 간단한 영상촬영은 따로 설정하지 않는 이상 VFR로 녹화된다. 녹화 중간에 다른 요인으로 인해서 설정은 60fps였지만 40fps같은 다른 fps로 녹화는 경우도 있기 때문에 VFR을 이용하는 것이 이런 부분을 좀 더 유연하게 처리해줄 수 있기 때문이다. 

그래서 뭐? VFR이 뭐가 문제라는거야?


사실 VFR은 문제가 없다. 오히려 영상의 용량을 줄여주는 고마운 놈이다. 그럼 뭐가 문제일까?


이게 다~ Adobe 때문이다. Adobe Premiere Pro에서는 VFR을 지원하지 않는다. Premiere Pro는 60fps라고 되어있으면 프레임을 60fps간격으로 읽어드린다. 그래서 가변 프레임에서 프레임이 변하는 구간을 지나면서 서서히 싱크가 밀리기 시작한다. 그럼 Adobe는 이 문제를 알고 있을까?


놀랍게도 알고 있고, 오래전부터 Premiere Pro를 사용하는 사람이라면 인지하고 있는 문제점이다. 그럼 어도비가 뭐라고 답변을 했을까? 이런 문제를 해결하려고 하고 있을까? 궁금해서 인터넷을 돌아다니며 Adobe의 공식답변들을 찾아다녀 봤다.


VFR에 관련된 문제가 떠오르기 시작한 건 iPhone에서 VFR을 이용한 비디오 촬영이 나왔을 때부터인 것 같다. 그때까지만 해도 영상산업에서는 VFR보다는 CFR을 많이 사용하였고 (지금도 그럴 것으로 생각하지만) 주요 영상 산업이었던 영화, 드라마, 광고 같은 산업에서는 용량보다는 안정적인 퀄리티가 중요했기 때문에 지금도 CFR을 주로 사용하고 있다고 한다.


Adobe는 Premiere Pro가 이런 전문적인 영상 산업을 타겟으로하여 만들어진 프로그램이면서, Premiere의 업데이트 주기가 긴 만큼 기능 추가에 신중을 기하고 있다고 설명하고 있다.


그래서 해결법은 뭔데?!

앞에 있는 원인이고, Adobe의 사정이고 상관 없고 일단 이 시점에서 우리가 이런 현상을 어떻게 해결할 수 있는지 알아보자. 가장 직관적이면서 현재 내가 사용하고 있는 방법을 소개하자면 바로 다시 인코딩하는 것이다.


물론 OBS(Open Broadcaster Software)에서 CFR로 송출하거나 녹화하는 기능이 있지만 완벽하지는 않다고한 다. 가장 간단한 방법인 재인코딩은 인코더 프로그램을 이용하여 VFR이었던 파일을 부족한 프레임을 보간해서 CFR로 전환하는 방법이다. 나는 주로 다음팟인코더를 이용하는데 설정법은 다음과 같다.




다른 해결법은 이정도로도 충분히 해결가능하다. 단점이 있다면 다시 인코딩하는데 걸리는 시간과 결과물의 용량이 늘어난다는 단점이 있을 수 있다. 근데 어쩌겠는가.... Premiere Pro가 지원을 안한다는데....


다른 방법은 없고?

다른 방법은 OBS에서 강제 CFR기능이 있지만 미흡하다고 알려져있다. 여유가 된다면 가장좋은 방법은 VFR을 지원하는 소니 베가스로 갈아타는 것이 아닐까한다.