기타

VirtualDub, Avanti, AviSynth를 사용한 초보적인(?!) DVD -> 동영상 파일 변환법.

by Alkaid posted Aug 27, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

  'DVDFab 같은 변환기 돌리면 되지 뭘 번거롭게....'할 수도 있지만 변환기를 몇 개나 깔아놓고도 만족스럽지 못할 때가 있습니다.  '나는 이러이러하게 했으면 좋겠는데 도저히 내 마음에 드는 것을 찾을 수 없다'같은 것 말이죠.  물론 여기서 제시하는 방법도 사용자에 따라서는 만족스럽지 못할 수도 있습니다.

- 인코딩 초보다 보니 인코더의 파라미터 설정 같은 것은 죄다 생략했습니다.


주의: 이렇게 하여 나온 결과물은 어디까지 개인적인 백업/소장 용도로만 사용하여야 합니다.  무단으로 넷상에 배포하면 어떻게 될 지는.... 아시죠?


사용 툴:

DVDFab HD Decrypter(다른 건 기간 제한 있는 평가판이지만 이거는 무료) - http://www.dvdfab.com

DGMPGDec - http://neuron2.net/dgmpgdec/dgmpgdec.html (소스코드만 제공), http://www.videohelp.com/tools/DGMPGDec (바이너리 다운가능한 곳 중 하나)

VirtualDub - http://www.virtualdub.org/

VirtualDub용 MPEG-2 플러그인 - http://home.comcast.net/~fcchandler/index.html (여기서 다른 플러그인도 받아서 설치하는 것을 권장)

Avanti(FFMpeg GUI) - http://avanti.arrozcru.com/

(FFMpeg 실행파일 - http://ffmpeg.zeranoe.com/builds/ )

AviSynth - http://avisynth.org/mediawiki/Main_Page 

(스크립트 작성을 도와주는 툴 사용 권장 - http://forum.doom9.org/showthread.php?t=153248 )


- 준비작업

1) 리핑을 원하는 DVD를 드라이브에 넣고 DVDFab HD Decrypter(다른 툴을 써도 상관없음.  단 버전업이 중단된 지 오래된 것들은 최신 DVD는 읽지 못함)를 사용하여 암호화를 해제합니다(DVD 내용물이 어디에 저장될 것인지 지정하면 decrypter가 암호화가 해제된 내용물을 해당 장소에 복사함).

2) 과정이 완료되면 미리 지정해 둔 디렉토리를 확인합니다.  제대로 작업이 완료되었다면 일반적인 동영상 재생기(물론 DVD-Video를 지원하는)로 정상적인 재생이 되어야 함.

3) 이렇게 만들어진 파일을 ISO로 만들거나 다른 매체에 구울 수도 있지만(어디까지나 백업 목적으로) 변환이 목적이라면 이 과정은 생략.



- VirtualDub을 사용한 간단(!) 변환

1) VirtualDub을 설치합니다(이미 설치되어 있으면 생략).

2) 위에 링크된 사이트에서 VirtualDub용 MPEG-2 입력 플러그인을 다운하여 (현재 VirtualDub이 설치된 장소)\plugin\에 vdplugin 파일의 압축을 풉니다.  이렇게 하면 VirtualDub에서 vob파일을 읽어들일 수 있게 됩니다.  덤으로 같은 사이트에서 AC3 플러그인도 받아서 설치하는 것을 권장(DVD-Video의 기본 사운드 형식이 AC3).

3) VirtualDub을 실행하고 하드에 풀려나온 vob를 불러옵니다....인데, 일반적으로 DVD에 수록된 vob파일은 한개가 아니라 여러 개입니다.  보통 메뉴나 로고등을 보여주는 파일이 있고 그 다음에 실제 타이틀이 들어가는 파일인데 문제는 이게 한 타이틀 당 하나가 아니라 한 타이틀을 여러 개의 파일에 나누어 수록한다는 거죠.  아니면 역으로 여러 타이틀이 한 vob에 들어가는 경우도 있는데 이쪽은 타이틀이 보통 트레일러나 삭제된 장면처럼 짧은 동영상 클립입 경우입니다.  변환기를 사용하면 이런 문제는 신경쓸 필요가 없는데 여기서는 VirtualDub으로 불러와서 인코딩하는 것이므로 신경을 써야 겠죠?  

  VirtualDub에서 'Open Video File'을 해 보면 대화상자 맨 아래에 두 개의 옵션이 있는 것을 볼 수 있습니다.  첫 번째는 파일을 불러온 뒤에 추가 옵션 대화창을 여는 것이고, 두 번째는 불러온 파일과 링크된 다른 파일들도 함께 여는 것입니다.  둘 다 체크하고 vob파일을 선택합니다.  보통 본편 타이틀은 VTS_01_1.vob에서 시작하므로 이걸 열면 됩니다.  앞에서 말한 옵션을 체크한 상태에서 파일을 열면 옵션창이 나오는데 여기서 맨 위의 'Open multiple VOB files as one virtual file'을 체크하고 ok를 누르면 됩니다.  그러면 Open Multiple VOBs 대화창이 뜨면서 불러올 파일들을 선택할 수 있는데 원하는 파일들이 모두 목록에 뜬 상태라면 그냥 ok를 누르고 넘어가면 됩니다.  

4) 파일이 모두 불러와졌다면 일단 재생해서 원하는 파일이 불러와 졌는지 확인합니다.  확인이 끝났으면 다음 단계로.

5) 압축할 코덱을 지정합니다.  VirtualDub은 시스템에 설치된 코덱을 사용하기 때문에 K-Lite Mega Codec Pack처럼 인코딩 필터가 포함된 코덱팩을 깔거나 아니면 개별 코덱 중 필요한 것을 미리 설치해 두어야 합니다.  영상이나 음성이나 모두 메뉴에서 Full Processing Mode가 체크되어 있어야 각 메뉴의 Compression에서 사용할 코덱을 지정하고 코덱을 세부적으로 설정할 수 있습니다.

  음성의 경우 트랙이 하나만 있다면 상관없지만 DVD의 특성상 채널별, 언어별로 오디오 트랙이 여러 개 있을 수 있습니다.  이 경우는 Audio -> Source Audio에서 원하는 트랙을 지정해야 합니다.

6) 필요하다면 Video -> Color Depth에서 색상 형식을 변경합니다.

7) 코덱의 지정과 설정이 끝나면(코덱 설정에 대한 것은 생략) File -> Save as AVI로 파일을 저장하면 인코딩 과정을 거쳐 avi파일이 나오게 됩니다.  만일 코덱 설정에서 2 pass를 선택했다면 각 패스 당 File -> Queue Batch Operation -> Save as AVI로 파일 저장을 작업 컨트롤 리스트에 넣은 뒤 F4를 눌러 나오는 작업 컨트롤 창에서 start 버튼을 눌러 인코딩하면 됩니다.


8) 이렇게 해서 끝났다면 다행이지만 이 변환법에서 빼먹은 것이 있습니다.  바로 인터레이싱 제거.  Video -> Filters에서 deinterlace 필터를 추가하여 인터레이스 제거 방식등을 설정해 줄 수 있는데 잘못 건드리면 기대한 것 이하의 결과가 나오고 작업량도 더 늘어날 수 있습니다(특히 fps 두 배로 뻥튀기하는 방식).

번외 - vob파일을 미리 합쳐서 불러오는 방법도 있습니다.  명령 프롬프트를 열어서 vob파일이 있는 곳으로 간 뒤에(이왕이면 탐색기에서 오른쪽 버튼을 눌러 여기서 명령 프롬프트를 여는 것이 더 편함.  단 WinXP의 경우 MS 홈페이지에서 별도의 트윅툴을 다운해서 깔아야 이 기능이 나오지만) 

copy/b VTS_01_1.vob+VTS_01_2.vob...+VTS_01_n.vob VTS_01.vob 

식으로 입력하면 VTS_01.vob라는 파일로 합쳐지게 됩니다(물론 용량이 크니까 시간도 오래 걸림).



- Avanti를 이용한 변환

1) Avanti를 설치합니다.  이것은 FFMpeg을 위한 GUI frontend이기 때문에 인코더 역할을 할 FFMpeg 실행파일은 따로 구해서 (Avanti가 설치된 곳)\ffmpeg\에 넣어주면 됩니다.

2) Avanti를 실행시키고 Source1에 변환할 파일을 지정하고 Destination에 변환될 결과물이 들어갈 장소와 파일 이름을 지정합니다.(vob파일을 합쳐놓으면 작업하기 편함)

3) Destination Audio Settings와 Destination Video Settings에서 출력물의 코덱, 형식, 품질, 표시 해상도(DAR, Display Aspect Ratio) 등을 지정합니다.  여기까지는 일반적인 변환기와 같고, 그 외에 User VIDEO Options란 것이 있는데 여기에는 ffmpeg에서 사용하는 각종 파라미터들이 들어갑니다만, 특별한 경우가 아니고서는 건드릴 일이 그리 많지 않을 겁니다.

4) 색상 보정, 해상도 변경/자르기, 자막 스타일 편집 등의 설정은 상단의 툴바에 있는 아이콘을 누르면 나오지만 단순변환만 할 때는 크게 필요하지 않으므로 일단 넘어갑니다.

5) Start process를 눌러 인코딩을 시작합니다.

6) 인코딩이 끝나면 결과를 확인합니다.



- DGMPGDec을 사용한 비디오/오디오 분리(demux: demultiplexing)와 AviSynth를 전처리기로 사용하는 파일 변환

1) DGMPGDec을 설치합니다. 

2) AviSynth를 설치합니다.  (AviSynth가 설치될 경우 Avanti에서 자동적으로 AviSynth의 플러그인 폴더를 인식하게 됩니다)

3) 일단 DGDecode.dll을 (AviSynth가 설치된 곳)\plugins\에 복사합니다.

4) DGMPGDec을 시작합니다(실행파일은 DGIndex.exe).  DGIndex 창이 뜨면 File->Open에서 불러올 vob파일을 선택합니다.  그러면 File list창이 뜨는데 여기서 원하는 vob파일을 더 추가합니다(미리 통짜로 합쳐놓은 vob를 불러온 거라면 그냥 ok를 눌러 넘김).

5) 옵션은 잘 모른다면 건드리지 말고 Audio -> Output Method에서 Demux All Tracks를 선택합니다.

6) File -> Save Project and Demux Video를 클릭하면 d2v형식의 프로젝트 파일이 저장되면서 분리된 동영상은 (원래 파일명).demuxed.m2v로, 음성트랙은 각각 ac3 형식의 파일로 저장됩니다.  사용할 오디오트랙이 2채널인 경우 이걸 PCM/WAV로 변환해 둡시다(다채널일 때는 어떻게 처리할 지 모르겠음).  

7) 일단 생성된 m2v파일을 DGIndex에서 불러온 뒤 File -> Save Project로 별도의 d2v를 만듭니다.  앞으로 작성할 AviSynth 스크립트에는 이 파일을 사용합니다.

8) AviSynth 스크립트를 작성한 뒤 그걸 VirtualDub이나 Avanti에서 사용하게 됩니다.  우선 메모장을 열고 다음과 같은 스크립트를 씁니다.

#외부 플러그인, 필터를 불러옵니다.
LoadPlugin("(AviSynth 위치)\plugins\DGDecode.dll")
LoadCPlugin("(AviSynth 위치)\plugins\yadif.dll")

video = MPEG2Source("(경로명)\(파일명).d2v", cpu=0)
audio = WAVSource("(경로명)\(파일명).wav")

#Color Depth를 YUY2로 변경.  일부 인터레이스 제거방식은 특정 색상 형식에서만 작동함.  결국 최종적인 Color Depth는 인코딩시 결정할 것이므로 이 부분은 빼도 될 것 같음
video = ConvertToYUY2(video, interlaced=true)

#Yadif 플러그인을 사용한 인터레이스 제거
video = Yadif(video)
#분리된 동영상에 오디오트랙을 합칩니다
AudioDub(video, audio)

9) 작성된 스크립트를 (파일명).avs로 저장합니다.

10) avs파일을 VirtualDub이나 Avanti에서 불러와서 원하는 코덱으로 인코딩합니다.  Avanti에서 할 경우 이미 전처리기인 AviSynth에서 인터레이스 제거가 이루어지기 때문에 deinterlace에 체크할 필요는 없습니다.

11) 결과를 확인합니다.  제대로 인코딩이 완료되었다면 인터레이스 현상도, 영상과 음성 싱크문제도 없어야 할 겁니다.


**시스템 사양에 따라 다르지만 시간이 오래 걸리고 인내심도 필요하기 때문에 처음에는 되도록 짧은 분량의 영상을 가지고 해 보는 것을 권합니다.  물론 이것도 하다가 안되어서 계속 반복하면 스트레스가 엄청 쌓이게 되지만.



주의: 이렇게 하여 나온 결과물은 어디까지 개인적인 백업/소장 용도로만 사용하여야 합니다.  무단으로 넷상에 배포하면 어떻게 될 지는.... 아시죠?