그동안 내가 게임영상을 찍어오면서 쌓인 노하우를 한번 적어볼까 한다. 요즘 UCC가 뜨고있고 JWPlayer다 뭐다 해서 게임영상의 고화질인코딩이 대세이긴한데 먼저 몇가지 준비물을 알아보도록 할까?
<Hardware> - 캡쳐보드(데스크탑) or SKY HDTV6 USB(노트북) - DVD분배기 and 컴포넌트 케이블 2매 - 광입력 지원 사운드카드 and 광케이블 (선택)
<Software> - VirtualDub and megui, mediacoder - mp3 converter
일단 고화질캡쳐사양은 컴포넌트케이블이다. 일본내수용은 D단자라고도 불린다. 이 컴포넌트 or HDMI의 고화질인코딩을 위해선 데스크탑에선 캡쳐보드, 노트북에서는 현재로썬 SKY HDTV6 USB밖엔 없다.
컴포넌트방식은 크게 Interlace방식과 Progressive방식이 있다. 캡쳐하는데 가로줄이 생겨있는경우를 본적이 있는가? 그런방식으로 한줄단위로 건너뛰어서 영상을 두번에 걸쳐서 쏴보내는 방식을 Interlace방식이라고 하고 영상을 두번에 걸쳐서가 아니라 한번에 쏴보내는 방식을 Progressive방식이라 한다. 따라서 Progressive방식이 화질이 더 좋다.
Interlace방식은 끝에 480i처럼 i가 붙고, Progressive방식은 끝에 480p처럼 p가 붙는다. 480이니, 720이니 1080이니 하는 숫자는 영상의 세로사이즈를 나타낸다. 숫자가 커질수록 세로사이즈가 크다는 뜻을 나타내는데 왜 가로사이즈는 표시 안하냐고?
어쨌거나 노트북환경에선 현재로썬 480p 까지밖에 방법이 없다. SKY HDTV6 USB가 유일.
또하나, 고음질을 추구하는 경우는 광입력으로 사운드카드편에서 캡쳐하여야 하는데 이것은 게임기기마다 다르긴 하지만 PS2, XBOX360은 광출력을 지원한다.
노트북용에서 광입력을 받는 제품은 현재 전부 단종된 상태이다 ㄱ- 알아서 잘들 구해보시라... 본인도 구하다가 포기했다 OTL
아무튼 준비물중에 DVD분배기가 있는데, 이놈은 캡쳐할때 생기는 딜레이를 해결하기 위함인데, 입력을 하나로 받아서 둘로 쏴주는 녀석이면 충분하다. 한쪽은 LCD, TV등 화면을 보면서 플레이할 녀석과, 한쪽은 캡쳐용이다. 이렇게 하면 딜레이에 상관없이 쾌적하게 캡쳐할수 있다.
하드웨어 준비물은 모두 갖췄는가? 캡쳐보드의 드라이버설정같은것은 관련사이트를 참고하시라.
일단 캡쳐를 무압축으로 캡쳐를 한다. 캡쳐보드용 캡쳐는 내가 사용하지 않기 때문에 잘 모르니 일단 여기서는 SKY HDTV6 USB를 기준으로 설명하도록 한다.
먼저 나는 VirtualDub을 이용해 캡쳐한다. 가장먼저 해야할일은 crop으로 필요없는 레터박스를 잘라내는 것이다.
File -> Capture AVI로 캡쳐화면을 띄운다. Device메뉴에서 캡쳐 디바이스를 선택하고 Video -> Video Source에서 컴포넌트 입력을 선택한다. SKY HDTV6 USB라면 TV(?), Composite, SVideo이외에 밑에 알수없는 2개가 추가된다. 둘다 모두 똑같은 문구로 표시되어있는데 보통은 위의것을 사용하지만 PSP의 경우는 아래것을 사용해야한다. 이제 Video -> Overlay를 Preview로 바꾼다. 그리고 Video -> Preview Acceleration -> Progressive Both Field를 선택해본다. 이제 Video -> Crop을 선택해 레터박스를 제거하는 작업을 한다. 다음은 영상포멧을 선택한다. Video -> Set Custom Format을 선택해 영상포멧을 변경한다. 화면사이즈는 720 * 480, YUY2 YUY 4:2:2 Interleaved를 선택한다. 영상포멧에 대한 지식은 없지만 나는 이렇게 줄곧 사용해왔으니 그렇게 하는것 뿐이다.
이제 사운드캡쳐를 준비한다. Audio메뉴에서 사운드장치를 선택하는데 나는 항상 오디오는 사운드카드에 연결해 캡쳐한다. 이상하게 여기서는 수신카드의 음성은 재생이 안돼더라 ㄱ- Audio -> Enable Audio Capture를 선택해 오디오캡쳐를 활성화 시키고 Audio -> Enable Audio Playback을 비활성화 시킨다. 사운드카드에 연결되어 있으면 라인인으로 소리가 자동으로 나오기 때문이다. Audio -> Audio Input과 Audio Source를 선택하는데 Line In을 선택해준다.
여기부턴 VirtualDub의 버젼에 따라 갈리는 부분인데 구버젼에는 없는것이다.
VirtualDub의 하단의 StatusBar부분의 우측을 주목해보시라. 버튼이 2개가 있다. 하나는 오디오 사양, 하나는 캡쳐할 영상의 framerate이다. 오디오 사양을 44100, stereo로 선택해주고 framerate를 59.94로 선택해준다. 이 버튼이 없다면 있는 버젼을 구해야한다. 이부분이 중요하다.
일단 framerate를 59.94로 선택한순간 가로줄이 일제히 없어지는 경우가 간혹 생긴다. 아마도 VirtualDub 버그라고 생각되는데 수신카드의 골칫거리인 가로줄이 없어져버리고 영상자체가 59.94로 입력이 들어오기 때문에 60프레임으로 캡쳐할수가 있다. 하지만 하드웨어단에서 강제로 30fps로 다운먹스하면 소용없다 [...] 캡쳐보드가 아닌이상 29.97로 놓는게 현명하다. 그 옆의 가장 우측의 것은 영상자체의 bitrate다. 나중에 인코딩할때 이 bitrate가 사용된다.
일단 테스트캡쳐를 해본다. File -> Set Capture File로 캡쳐할 파일이름을 만들어주고 F5를 눌러 캡쳐를 일단 해본다 원하는 음질과 화면이 나올때까지 설정을 바꿔보는데 무엇을 바꾸느냐.... 오디오쪽은 사운드카드 설정쪽과 Audio 설정쪽을 만져보고 비디오쪽은 Preview Acceleration의 부분을 만져본다. 보통의 가로줄 없애기 방법은 Video -> Vertical Reduction으로 2:1 Linear로 캡쳐해 세로사이즈를 절반으로 해 캡쳐한후 인코딩할때 세로사이즈만 2배로 늘려서 결과물을 뽑아내는 방법을 사용한다. 하지만 앞서 설명했듯이 이렇게 하지않고 both로 설정해도 가로줄이 없어지는 게임이 간혹 있다. 아니면 non-interlaced쪽으로 설정하거나 interlace쪽을 설정해도 가로줄이 없어지는 경우가 있다. 이것은 미리 캡쳐하기 전에 설정을 만져봐야 한다.
원하는 화면이 나오는가? 그러면 F5로 캡쳐를 하고 Esc로 캡쳐를 중단하면 된다. 하다가 삑사리가 났다? 그럴경우엔 File -> Set Capture File로 먼저 선택했던 파일이 이미 파일이 되어져있는데 이놈을 삭제하고 다시 파일명을 설정해야하는데 디스크IO 혹은 간혹가다 이놈이 멋대로 이어붙이는 경우가 종종 발생한다 ㄱ-
캡쳐가 끝나면 이제 인코딩을 해야한다. 나는 VirtualDub, megui, mediacoder를 사용해 인코딩을 한다. 먼저 최고퀄리티의 동영상파일을 생성해내는 것인데 H.264코덱에 MP4파일포멧으로 만들어두길 나는 권장한다. 이유는 앞으로 플래시UCC서비스가 MP4파일을 손 하나대지 않고 재생하는 솔루션이 등장할것이기 때문이다. 아니 이미 벌써 플래시는 MP4의 재생이 가능하다. 이 MP4는 인코딩을 어떻게 하느냐에 따라서 다 다운받은후에 재생이 가능한 경우도 종종 발생하는데, megui나 mediacoder로 인코딩하면 그런경우는 발생하지 않는다. 또한 megui는 H.264전문 인코더이고 MP4와 궁합이 가장 잘맞는다. 따라서 H.264로 인코딩하려면 MP4로 만들어야하고 megui로 인코딩하는것이 가장 현명하며 나중에 Vegas등의 편집기로 편집이 가능하게 하려면 megui로 인코딩해야한다. 종종 Vegas가 mp4 H264의 파일을 읽지 못한다. 이런 경우는 AVI로 먼저 변환후에 작업해야한다. megui를 사용해 인코딩 하는 방법은 http://ba7man.tistory.com/tag/MeGUI 이곳에 자세히 나와있다. 여담이지만 H.264 + Nero AAC의 조합이 가장 좋다. megui는 좋긴 하지만 사용이 어렵다는 단점이 있는데 mediacoder는 인코딩시간이 길긴 하지만 사용이 편하고 강력하다는 장점이 있어서 mediacoder도 자주 사용하는 편이다.
최고퀄리티의 인코딩 사양은 video: 2-pass vbr, virtualdub에서 statusbar 최고우측에 표시되었던 bitrate정보, H.264, MP4 audio: neroaac, 640k - 44100k, AAC-LC 이정도가 가장 무난하고 좋다. 기존에 320k가 최고였던것에 비해 AAC는 640k까지 지원한다.
이렇게 최고퀄리티의 압축으로 영상을 만들어두자. 이제 남은것은 FLV로 만드는일이다. 아까 인코딩하고 남은 무압축파일을 AVI로 다시 만들어도되고 만든 MP4를 다시 AVI로 만드는것도 좋다. 어차피 비트레이트만 같으면 화질에는 거의 문제가 없기 때문에 다시 AVI로 바꾼다고 화질이 눈에띄게 저하되는것은 아니다. 다만 인코딩시간의 문제일뿐이다. MP4는 mediacoder를 이용해 avi로 변환하면 된다. 이때는 xvid, avi로 설정하면 된다.
현재까지는 FLV로 60fps를 인코딩하는 가장 좋은 방법은 ffmpeg와 virtualdub을 사용한 방법이 가장 무난하다. 이것에 관한 정보는 http://blog.naver.com/bluewish20/70025602419 여기에 자세히 소개가 되어있으니 참고바란다. 다만 60프레임으로 캡쳐하면 화면 하단부분이 좀 신경쓰이는 부분이 생기는데 이건 나도 모르겠다 ㄱ- 아무튼..... 도움이 되었으면 좋겠다.