마음 속 하늘은 항상 맑음~!

MediaCoder와 CUDA를 이용한 동영상 인코딩. 본문

기타

MediaCoder와 CUDA를 이용한 동영상 인코딩.

파르셀수스 2010. 11. 26. 00:20

 미디어코더(MediaCoder)는 오픈소스로 중국에서 만들어진 막강한 인코딩 프로그램입니다. 동영상 파일과 오디오 파일을 모두 인코딩할 수 있는 기능을 가지고 있습니다.

 그런데 솔직히 낮은 스펙의 컴퓨터에서는 동영상 인코딩을 하려면 무척 시간이 많이 걸립니다. 유행한지 오래되었으나 아직 인기가 없는 GPU연산 기능인 엔비디어의 CUDA를 이용하면 보다 빠르게 인코딩을 할 수 있습니다. ATI의 GPGPU는 아직 지원하지 않는 것 같고 아마도 이는 DirectComputing이 나와야 제대로 지원될 것 같습니다. 자신의 그래픽 카드가 지포스 9400 GT이상이면 이 CUDA 기능을 사용할 수 있습니다. 지포스를 사용하는 분들이라면 9500 GT 정도는 끼우고 사용하는 분들이 많을 것이라 봅니다. 조탁(Zotac)의 GeForce 240 GT AMPi 에디션을 사용하는 중인데 아주 잘 지원이 되는 것을 확인할 수 있었습니다.

 일단 프로그램을 다운로드하고 설치해야 합니다. 다른 옵션을 건드릴 필요없이 그대로 설치하면 됩니다.

 다운로드할 수 있는 곳은 http://www.mediacoderhq.com/dlfull.htm 이곳으로 full 버전을 다운로드해서 설치하면 됩니다. 아니면 다른 타 파일호스트 서비스들에도 올라와 있는 최신 버전을 사용하면 됩니다. 32비트 버전과 64비트 버전 중에 하나를 고르면 됩니다.



 설치하고 실행하게 되면 프로그램은 트레이로 내려가고 웹페이지가 갑자기 뜹니다. 예전부터 그랬는데 여전히 그대로 처음 시작이 되는 것 같습니다. 나중에 닫을때나 다른 기능에서도 자주 페이지가 뜹니다. 요거 참 불편하던데 -_-;

 웹창을 닫고, 아래의 트레이를 클릭해서 프로그램을 활성화시킵니다. 그럼 아래와 같은 화면이 뜹니다.


 몽땅 영문이죠. -_-; 겁먹을 필요 없습니다. 이 많은 내용들을 다 알아봐야할 필요는 없습니다. 일단 위의 'Output Folder'에서 인코딩된 파일을 저장할 폴더를 지정합니다.

 맨아래 프로세서와 그래픽카드가 나타납니다. 위 이미지에는 영어로 샘프론 140(단일 프로세서 -_-)와 지포스 240이라고 나와있습니다.

 이제 다른 설정은 필요없습니다. 개인에 따라 다른 설정도 필요하겠지만 이대로 사용해도 무방하다고 봅니다. 아이폰과 아이팟을 위한 동영상 인코딩을 시도해보겠습니다. 가지고 있지는 않지만 유명하니까 -_-;

 먼저 인코딩을 해야할 동영상 파일을 추가합니다. 맨 앞의 버튼에서 'Add File'을 선택하면 됩니다.
 

 'Add Folder'는 폴더의 동영상 파일들을 몽땅하고플 때, 그리고 'Add Folder Recursively'는 선택한 폴더 안의 하위 폴더(재미있게 말하면 새끼 폴더들)들의 동영상을 모두 찾아서 인코딩하도록 합니다. 다른 기능은 거의 사용할 이유가 없을겁니다.

 파일을 추가하면 아래와 같이 뜹니다. 그리고 상태(state)에 준비(Ready)라고 뜹니다.

 자 이제는 본격적인 인코딩을 위한 작업에 들어갑니다. 미디어인코더에는 이미 알려진 기기들에 대한 설정이 이미 들어 있습니다. 그것을 이용하면 복잡한 설정들을 피할 수 있습니다. 그 미리 설정된 기능을 사용하려면 상단 메뉴에서 'Features'를 선택하고 'UI Plugins'를 선택하면 많은 기기들의 설정이 있습니다.

 그림의 메뉴와 같이 아이폰을 위한 인코딩 설정을 선택합니다.


 그러면 다음과 같은 새로운 창이 뜹니다.


Format에서는 아이폰4나 아이폰3 등등의 자세한 기기 선택을 할 수 있습니다. 아이폰4 인코딩은 시간이 좀 더 많이 걸리는 것 같습니다.

그리고 Encoding에서 'CPU (Normal)'이 아닌 'GPU/CUDA(Fastest')를 선택합니다. 만약 CUDA가 지원되지 않는다면 이 기능을 사용할 수 없으니 'CPU'가 들어간 옵션만 선택할 수 있을겁니다.

 자 이제 기본적인 인코딩 준비는 되었고 자막을 입히기 위해 설정을 해야 합니다. 버튼이 많은 곳에서 'subtitles'를 선택합니다. 영어로 자막이라는 의미입니다.


 Font를 선택합니다. 버그가 있어서 이미 선택이 되어 있더라도 다시 선택해주어야 합니다. 그리고 Language에서 kor를 선택합니다. 이것도 마찬가지로 버그가 있어서 선택이 되어 있어도 다시 선택해주어야 합니다.

 그리고 맨아래의 버튼을 눌러서 자막 파일을 선택합니다. 확장자가 SMI 자막은 보이지 않으니 'All Files'를 선택해야 파일 선택을 할 수 있습니다. 아니면 파일 이름창에 '*.smi'를 입력하면 파일들이 보입니다. 리스트에는 없으나 smi 자막도 잘 지원됩니다.

 그리고 여기서 Encoding 메뉴는 자막 파일의 문자코드에 대한 설정을 하는 것으로 대부분의 smi파일은 ANSI를 선택하면 됩니다. 혹시 자막이 제대로 보이지 않은 경우에는 UTF8을 선택하면 됩니다.

 설정이 끝나면 닫습니다.

 이제 자막 설정이 제대로 되어 있는지 확인하기 위해서 'Play'버튼을 누릅니다. 자막이 제대로 보이면 'Stop'버튼을 누르고 'Start'를 누르면 인코딩이 시작됩니다. Stop버튼은 Play버튼과 같은 자리입니다.


이제 동영상이 인코딩이 되는 것을 기다리면 됩니다.



인코딩이 모두 끝난 후에 완료된 파일을 목록에서 지울때는 목록에서 오른쪽 마우스 버튼을 누른 후에 'Remove...'로 시작하는 메뉴를 선택하면 됩니다. 완료된 파일만 목록에서 지울 때는 Alt-Delete를 누르면 목록에서 지워집니다.

 인코딩이 모두 끝나면 알림메시지 팝업창이 뜹니다.

 간단한 동영상 인코딩 해보기 끝~

 (주) CUDA는 비디오 인코딩에서만 사용됩니다. 비디오 영상이 내부적으로 '디코딩 -> 자막작업 -> 인코딩' 이런 식으로 처리되는데 기본적인 'Source'에서는 CoreAVC(코덱으로 쉐어웨어, 현재 버전 2.0)라는 것을 사용하기 이전에는 디코딩 속도를 늘릴 수가 없어서 HD 영상 처리가 더 많은 시간이 걸릴 수 있습니다. CoreAVC를 사용하도록 설정하는 방법은 Ctrl+S를 누른 다음 창이 뜨면 아래의 이미지의 항목을 true로 만듭니다. CoreAVC가 설치되어 있지않으면 인코딩 작업시 에러가 납니다.