동영상을 인코딩하는 방법은 여러가지가 있습니다. 곰플을 이용해도 되고, 무료로 이용하고 싶다면
바닥을 이용해서 쉽게 인코딩을 할 수 있습니다. 대부분의 경우 바닥을 이용해서 인코딩을 하는게 쉬울겁니다. 바닥의 이용방법은 여기저기 많으니 저는 조금 색다른 방법을 소개해 보도록 하지요. 따라서 별 의미는 없습니다. 그냥 이런방법도 있다는 정도이지요.
일단 준비물은 xvid_encraw, avisynth, avisynth의 SoundOut 플러그인, avisynth의 TextSub 플러그인, ffmpeg 정도가 되겠습니다.
avisynth의 TextSub 플러그인은 자막을 같이 인코딩 해야 할때 필요한 플러그인입니다. 제가 가진 GP2x 같은 경우 자막파일인 .smi 파일을 인식해서 자막을 뿌려주기 때문에 저는 필요없지만 필요한 분들도 있겠죠.
xvid_encraw 는 xvid로 인코딩해주는 commandline 프로그램입니다. 이게 지금 제가 적는 글의 인코딩 포인트 입니다.
ffmpeg은 xvid로 인코딩된 영상과 음성파일인 mp3를 하나로 합쳐주기 위해 필요합니다. 다른 프로그램으로도 가능하지만 이걸로 선택 했습니다.
위 프로그램 목록으로 눈치 채셨을지 모르겠지만 위 프로그램들은 모두 commandline 프로그램입니다(콘솔창을 열어서 직접 타이핑해서 실행하는 프로그램, No GUI 프로그램). 굳이 commandline 프로그램만으로 하는 이유는 나중에 간단히 스크립트등을 만들어서 인코딩 할 수 있기 때문이죠. 이건 각자의 몫입니다만....
일단 저 프로그램들을 구해야 겠죠. Doom9 같은 포럼에서 돌아다니면 구할 수 있긴 한데 좀 꽁수를 쓰면 좀더 쉽게 얻을 수 있습니다. MeGUI의 업데이트 저장소를 이용하는 겁니다. MeGUI라는 프로그램은 저들 프로그램을 이용해서 GUI로 인코딩을 쉽게 할 수 있게 해 주는 프로그램이거든요. 그냥 MeGUI를 이용해도 되지만 제 입맛엔 안맞는 부분도 있어서요.
어쨌던 제가 알고 있는 주소중의 하나는 바로 여깁니다.
http://megui.org/auto/ 현재 이 글을 적는 순간까지는 최소한 문제없이 프로그램을 다운받을 수 있습니다.
TextSub의 경우는 avisynth의 필터라 저곳에서 구할 수는 없고 avisynth사이트에서 구해야 되는데
http://avisynth.org/warpenterprises/files/textsub_20040308.zip 링크는 이곳입니다. SoundOut 플러그인은 기존 글이 있으니 참고 하시고요.
자....그럼 재료가 모아졌으니 본격적으로 인코딩을 해 보도록 하죠. 글을 간단히 하기 위해 위의 실행프로그램을 모두 한폴더에 몰아놓고 시험해 보도록 하겠습니다. 응용은 각자 하시고요.
c:\encoder 폴더에 모두 몰아넣었다고 가정하겠습니다. 동영상 파일이름은 s.avi, 자막파일은 s.smi 라고 가정합니다.
일단 avs 파일을 만들어 봅시다. s.avs 파일이라고 가정합니다. 파일 내용은 다음과 같습니다.
AVISource("s.avi")
SoundOut(output="mp3",filename="C:\encoder\s_a.mp3",autoclose=true,
showprogress=true,mode=2,cbrrate=48)
BilinearResize(424,240)
ChangeFPS(11.988)
TextSub("s.smi")
보시면 아시겠지만 resize 부분은 맘에 드시는 대로 하면 되고요. 프레임은 소형기기용이라 그냥 12프레임으로 설정했습니다. TextSub로 자막도 지정해 주었고요. SountOut으로 음성부분을 mp3로 추출하는데 미니기기용이라 저는 48k 로 지정했는데 이부분도 취향에 따라 고치면 됩니다.
그럼 이 s.avs 파일을 인코딩해 보죠. cmd.exe를 실행해서 콘솔창을 연다음 c:\encoder 디렉토리로 이동하시고요.
xvid_encraw -i "s.avs" -o "s_v.avi" -single -bitrate 220 -max_bframes 0 -progress
xvid_encraw 의 자세한 옵션을 알고 싶으시면 xvid_encraw -h 하면 됩니다.
위와 같이 실행을 하면 인코딩이 시작되고 인코딩이 끝나면 s_v.avi 라는 파일과 s_a.mp3 라는 파일이 생깁니다.
이제 이 두 파일을 합치면 됩니다. 위에서 말했듯이 ffmpeg을 이용합니다.
ffmpeg -i s_v.avi -vcodec copy -i s_a.mp3 -acodec copy [pda]s.avi
그러면 [pda]s.avi 라는 동영상이 만들어 집니다. 모든 과정이 끝났습니다. ^^
마무리로 몇가지 이야기 하자면 만약 자막을 넣어서 인코딩을 할 경우에 위와 같이 smi를 직접 이용할 경우 자막 폰트의 크기를 조정할 수 없습니다. 만일 폰트의 크기를 키우고 싶으시다면 smi를 ssa로 변환해서 폰트크기를 수정한 다음 인코딩을 해야 합니다. smi를 ssa로 바꾸는 법은 구글등에서 smi와 ssa 로 검색해 보시면 찾을 수 있습니다. 저는 그냥 인코딩해도 볼만 하다고 생각하고 제 GP2x는 굳이 자막을 같이 인코딩 할 필요가 없어서 이 부분은 직접 해 보진 않았습니다.
이글 시작부분에 소개하고 있는 바닥의 경우도 사실은 commandline 실행 프로그램인 mencoder.exe 를 쉽게 이용할 수 있도록 만든 프로그램입니다. 따라서 제가 설명한 위의 과정을 GUI로 실행해 주는 프로그램을 만들거나 GUI가 아니라도 간단한 스크립트로 만들어 사용하는 편이 실제 인코딩하기에 더 편리할 것입니다.