기타

PCSX2 자체 캡처기능으로 캡처한 동영상 인코딩하기

by Alkaid posted Sep 09, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

(이런 것도 강좌냐고 하겠지만 어쨌든 시작)

  플레이스테이션 2 에뮬레이터인 PCSX2에는 자체 동영상 캡처기능이 있습니다.  그래픽 플러그인인 Gsdx32의 것인지는 잘 모르겠지만.  이 기능을 사용하면 Fraps 같은 별도의 캡처도구를 써서 동영상을 찍을 필요가 없고 저장된 결과물에서도 프레임 저하현상을 볼 수 없다는 장점이 있지만 음성과 영상이 따로 저장되는데다가 동영상을 찍는 동안 게임이 느려진다는 문제가 있습니다(사실 이 문제는 별도의 캡처 프로그램을 써도 나올 수 있음.  녹화중 프레임 저하문제는 컴퓨터의 사양에 따라 달라질 수 있음).  본문에서는 이렇게 하여 하드에 저장된 결과물을 인코딩하는 것에 대해 말할 것입니다.


[동영상 녹화]

1. PCSX2에서 F12를 누릅니다.  사용하는 그래픽 플러그인이 Gsdx32라면 대화창이 뜰 것입니다.

pcsx2-screencapturedialogue.png

  해당 대화창에서 파일을 저장할 경로를 선택하고 원하는 이름을 입력한 뒤(AVI형식으로 저장된다는 것에 주의) 코덱과 해상도, Color Depth를 지정합니다.  무압축으로 저장하는 것은 용량이나 속도 문제상 추천하지 않으므로 Lagarith Lossless Video Codec같은 무손실압축 코덱을 사용하여 저장하는 것을 권합니다(물론 이렇게 해도 분당 1GB가까이 나올 수 있음).  설정이 끝나면 OK를 누릅니다.

2. 원하는 부분의 녹화가 끝나면 F12를 눌러 녹화를 종료합니다.  제대로 녹화가 되었다면 PCSX2가 설치된 곳(또는 avi가 저장된 곳)에 recording.wav가, 녹화시 지정한 파일경로상에 (파일명).avi가 저장되어 있을 것입니다.



[동영상 인코딩]

사용 툴:

VirtualDub

AviSynth

1. VirtualDub에서 동영상을 불러옵니다.  녹화된 동영상에는 음성트랙이 없으므로 별도의 파일에서 불러와야 합니다.

2. VirtualDub의 Audio->Audio from other file에서 녹음된 wav파일을 불러옵니다.

3. 저장할 부분을 home과 end로 범위를 지정합니다.

4. Video, Audio 양쪽 다 Full processing mode를 체크하고, Compression에서 사용할 코덱을 지정합니다(코덱 설정에 대한 자세한 설명은 생략).

5. File -> Save as AVI.  만일 2-pass라면 패스별로 파일저장(또는 첫번째 패스는 파일저장 없이 'Run video analysis pass'를 실행)을 선택해야 합니다(Queue Batch Operation을 통해 작업 리스트에 넣은 뒤 F4를 눌러 리스트창을 띄우고 실행).

6. 나온 결과를 확인합니다.  

-> 이렇게 하면 되긴 한데 문제는 녹화된 동영상이 60fps(정확히는 59.94fps?)기 때문에 동영상 공유사이트에 올리면 올려놓은 결과물에서 프레임삭제로 인한 끊김이 발생할 수 있습니다.  이 문제를 해결하고 싶다면 Video->Frame Rate에서 프레임레이트를 바꾼 뒤 인코딩하거나, 아니면 아래에 제시하는 방법을 사용하면 됩니다.


- AviSynth를 전처리기로 사용하는 방법.

1. AviSynth가 이미 설치되어 있다는 가정하에서 다음 스크립트를 작성합니다:

video = AVISource(파일명) #불러올 avi파일의 용량이 2GB를 넘어갈 경우 AVISource 대신 OpenDMLSource를 사용.
audio = WAVSource(파일명)

clip = AudioDub(video, audio) #동영상과 음성을 합친다
ChangeFPS(clip, "ntsc_video") #59.94fps로 녹화된 동영상의 프레임을 29.970fps로 변환.  만일 PAL이라면 "pal_video" 프리셋을 사용.

작성된 스크립트를 적당한 이름으로 저장합니다(확장자는 avs).  필요하다면 crop이나 resize등을 적용할 수도 있습니다(상하에 레터박스가 있고 그것을 제거하고 싶을 경우).

2. 1에서 작성한 스크립트를 VirtualDub에서 불러옵니다.

3. 저장할 부분을 home과 end로 선택합니다.  이후는 VirtualDub만 사용하는 방법과 동일.

4. 인코딩된 결과물을 확인합니다(특히 영상과 음성 싱크문제가 없는지).  제대로 되었다면 29.970fps의 avi파일이 나올 것입니다.

-> AviSynth 스크립트 작성시 다음 줄을 넣으면 위에서 3번 과정을 스킵할 수 있습니다만, 영역을 제대로 선택하려면 역시 VirtualDub을 사용하거나 AvsPmod같은 스크립트 편집기를 사용하는 것이 좋습니다.

Trim(동영상, 시작 프레임, 끝 프레임) #동영상에서 선택 영역만 남기고 삭제