예전에 작성했던 글인데 이번에 새로 한번 작성해봅니다. eac3to의 기능이 워낙 막강해져서 이제는 매우 편리해졌습니다.
eac3to (무설치)
http://madshi.net/eac3to.zip
Haali Media Splitter (설치)
http://haali.su/mkv/MatroskaSplitter.exe
GraphStudio (무설치)
http://blog.monogram.sk/janos/download/dl-graphstudio.php
먼저 eac3to로 블루레이 원본 소스를 확인합니다. 사용법은
eac3to "블루레이 원본 소스 폴더"
아래 예제는 타짜입니다.
가장 먼저 나온 1) 00000.mpls, 00020.m2ts, 2:20:18 부분이 메인입니다. 타짜의 경우 00020.m2ts 통파일 하나로 이루어져 있습니다. 대부분의 블루레이 타이틀은 이처럼 단일 파일이 메인입니다. 나머지는 부가 영상들이지요. 그런데 이렇게 하나의 통파일이 아닌 여러개의 파일로 이루어진 경우도 있습니다. 일반적으로 픽사 애니메이션들이 그렇습니다. 아래 예제는 라따뚜이 북미판입니다.
라따뚜이의 경우 무려 31개의 파일로 조각나 있습니다. 이런 경우 일단 mkv 통파일로 리먹싱을 먼저 해줘야 합니다. 그래야 오디오 싱크가 정확하게 맞아 떨어집니다. eac3to의 기능이 워낙 막강하기 때문에 파일간 오디오 갭까지 알아서 다 처리해줍니다. 이렇게 오디오 갭이 발생하는 경우 2패스 작업을 하더군요. 그리고 블루레이 LPCM인 경우 자동으로 채널 리맵핑 처리도 해줍니다. eac3to 정말 편리한 툴입니다.
다시 타짜로 돌아가서...
1) 00000.mpls, 00020.m2ts, 2:20:18
- Chapters, 29 chapters
- h264/AVC, 1080p24 /1.001 (16:9)
- DTS Master Audio, Korean, multi-channel, 48khz
- AC3, Korean, stereo, 48khz
- AC3, Korean, stereo, 48khz
챕터 부분을 추출하면 TXT 파일 하나가 나오는데 그냥 구간 정보만 들어있습니다. 주로 애니메이션에서 챕터파일이 필요하겠지요.
H264/AVC는 비디오 코덱이고 1080p는 해상도와 Progressive Scan이라는 표시, 그리고 24/1.001은 23.976fps를 나타냅니다. 30/1.001은 29.97fps 겠지요? (16:9) 부분은 뭐 당연한거고...
나머지 오디오 트랙 이야기는 다음 단계에서 하겠습니다.
1) 00000.mpls, 00020.m2ts, 2:20:18
- Chapters, 29 chapters
- h264/AVC, 1080p24 /1.001 (16:9)
- DTS Master Audio, Korean, multi-channel, 48khz
- AC3, Korean, stereo, 48khz
- AC3, Korean, stereo, 48khz
위 타짜의 경우 세번째 DTS-MA 트랙을 추출하는게 좋을 것 같습니다. 그 아래 AC3 두가지는 물론 Commentary일 듯 합니다. 일반적으로 블루레이 영화는 1080p H264(AVC) DTS-MA 스펙으로 출시됩니다. 가장 다루기 쉬운 형태이기도 합니다. 이렇게 오디오 부분이 DTS라면 따로 트랜스코딩하지 않고 바로 Core 파일만 추출해주시면 됩니다.
eac3to h:\tazza 3:audio.dts -core 4:comment1.ac3 5:comment2.ac3
Commentary는 물론 감상하지 않으신다면 추출하지 않아도 되는데 저렇게 한번에 여러개를 추출하려면 한꺼번에 적어도 된다는 것을 보여드린 것입니다. 물론 2:video.mkv 라고 적어주시면 비디오 부분도 mkv로 추출 가능합니다.
라따뚜이의 경우 비디오랑 오디오를 같이 추출해야 합니다. 앞서 말씀드렸듯이 비디오를 mkv 통파일 하나로 먼저 추출해야 인코딩이 수월하고 싱크 문제도 걱정할 필요가 없어지기 때문입니다.
eac3to h:\RATATOUILLE 2:video.mkv 3:audio.dts
그런데 라따뚜이의 경우 3번 오디오가 DTS가 아닙니다. LPCM인데 일반적으로 DTS로 트랜스코딩을 합니다. 왜냐하면 LPCM이나 TrueHD 음성의 경우 일반적인 미디어 재생기로는 잘 재생되지 않기 때문입니다. 또한 mkv 파일에는 TrueHD 트랙을 담을 수 없는 것 같습니다.
참조 : http://www.matroska.org/technical/specs/codecid/index.html
아무튼 재생의 범용성을 위해 일반적으로 DTS 또는 AC3(Dolby Digital) 코덱으로 트랜스코딩을 해줍니다. 이렇게 트랜스코딩을 하게 되는 경우 eac3to는 먼저 채널별 WAV 파일을 분리해낸 다음 다시 인코딩에 들어갑니다. 시간은 좀 걸려도 그렇게 하는 편이 품질면에선 좋겠지요.
그런데 DTS로 트랜스코딩을 하기 위해서는 Surcode DTS Encoder 라는 프로그램을 따로 설치해야 합니다. 이 프로그램은 상용 프로그램인지라... 이 프로그램을 설치한 다음 최초로 실행을 한번 해줬다 꺼야 eac3to에서 dll을 후킹할 수 있습니다. 아니면 음질이 좀 더 낫다는 DTS Pro Encoder 프로그램을 이용하여 수동으로 DTS 인코딩을 해줄 수도 있습니다. 물론 이것도 상용 프로그램이긴 합니다만... 이 프로그램은 AGM 형식을 인풋으로 받기 때문에 eac3to로 먼저 LPCM이나 TrueHD를 AGM으로 추출해줘야 합니다.
그리고 만약 위 라따뚜이에서 첫번째 앵글이 아닌 두번째 앵글을 추출하고 싶다면 (또는 감독판과 극장판이 공존하는 경우 감독판이 두번째라면)
eac3to h:\RATATOUILLE 2) 2:video.mkv 3:audio.dts
이런 식으로 폴더 뒤에 추출하고 싶은 번호를 적어주시면 됩니다.
그리고 특이한 사실이 하나 있는데 비디오 코덱이 VC1인 경우 음성은 대부분 TrueHD입니다. 그 이유는 잘 모르겠습니다. 이게 원래 HDDVD에서 많이 사용되던 콤비인데 블루레이 중에도 영상이 VC1 코덱이면 거의 대부분 음성은 TrueHD 코덱을 사용하더군요.
아래 예제는 쇼생크 탈출입니다.
1) 00002.mpls, 00002.m2ts, 2:22:33
- Chapters, 40 chapters
- VC-1, 1080p24 /1.001 (16:9)
- AC3, English, multi-channel, 48khz
- TrueHD, English, multi-channel, 48khz
- AC3, French, stereo, 48khz
- AC3, Spanish, stereo, 48khz
- AC3, English, stereo, 48khz
- AC3, Japanese, stereo, 48khz
보시다시피 VC-1에 TrueHD입니다.
이제 본격적인 인코딩을 위해 GRF 파일을 작성합니다. 가장 일반적인 H264 소스의 경우 Haali Simple Media Splitter에 CoreAVC 조합을 이용합니다. 이게 가장 빠르고 편합니다.
이 GRF를 작성하는 이유는 MPEG2 코덱의 TP파일을 인코딩할 때 DGIndex로 d2v를 추출해 DGDecode로 디코딩하는 것과 달리 DirectShow 필터로 바로 프레임 서빙을 해주기 위함입니다. 물론 DGAVCIndex 라는 프로그램도 개발중에 있지만 아직까지는 불안정한 것으로 알고 있습니다. 그리고 CoreAVC 속도가 워낙 빠르다보니... 또한 어차피 VC1 코덱인 경우 DirectShow 필터를 써야하기 때문에 이 방법은 알아두시는 편이 좋습니다.
먼저 GraphStudio를 실행합니다. 그리고 Graph - Insert Filter 메뉴로 간 다음 DirectShow 필터에서 Haali Simple Media Splitter를 찾아 더블클릭 합니다. 그러면 소스파일 지정하는 창이 뜨는데 여기서 디코딩할 소스 파일을 지정해줍니다. 위 예제 타짜의 경우 00020.m2ts 파일을 지정해야겠지요?
그 다음은 원본이 H264 코덱이니 이를 디코딩해줄 CoreAVC를 더블클릭 합니다. 물론 다른 코덱을 사용하셔도 무방한데 경험적으로 CoreAVC가 가장 빠르더군요. MPC 코덱도 사용해보고 싶은데 이상하게 MPC 코덱은 이렇게 그래프로 디코딩하면 무지개처럼 화면이 깨지길래 포기했습니다. 그 부분에 대해서는 좀 더 알아봐야겠습니다.
아무튼 디코딩할 코덱을 더블클릭으로 넣은 다음 화살표를 연결해줍니다. 마우스로 할리 스플리터의 비디오 부분에서 CoreAVC의 인풋 부분으로 그어주시면 됩니다.
위 예는 H264 코덱의 타짜이고 VC1 코덱은 일반적으로 MS의 WMVideo Decoder DMO를 사용합니다. 이 코덱은 XP의 경우 윈미플11을 설치하면 되고 비스타 이상은 기본 내장입니다.
쇼생크 탈출을 그려보면
참고로 이 그래프 에디트 프로그램의 경우 DMO 필터들은 다이렉트쇼 필터에 두지 않고 따로 모아두었더군요.
이렇게 작성한 그래프를 GRF 파일로 저장하시면 됩니다.
그런데 가끔 위 방법으로 되지 않는 영상들이 있습니다. 드문 케이스이지만 주로 VC1 코덱에서 그런 현상이 발생합니다. 이 경우 Cyberlink나 Sonic Cinemaster 코덱을 활용해보는 방법도 있는데(물론 상용 코덱) 예를 들어 위 쇼생크 탈출에 할리 스플리터와 WMVideo Decoder DMO 조합 대신 다른 방식을 적용해보겠습니다.
Graph - Insert File Source (Async.) 에서 원본 파일을 열어주고
Sonic HD Demuxer - Sonic Cinemaster Video Decoder - SampleGrabber 로 그려주시면 됩니다.
그 외의 다양한 디코딩 방법은 경험을 통해 스스로 터득하시면 되겠습니다.
참고로 윈도우 XP에서는 문제가 없던데 현재 사용중인 윈도우 7 64비트에서는 VC1 코덱을 할리 스플리터와 WMVideo Decoder DMO 조합으로 그래프 작성해서 AVS 스크립트를 MeGUI에서 불러주면 응답을 하지 않더군요. 그 이유는 잘 모르겠습니다. 물론 대부분의 블루레이 타이틀은 H264 코덱이기 때문에 별 문제가 없지만 VC1 코덱은 여러모로 말썽을 일으키곤 한다는 점 염두에 두시기 바랍니다.
스크립트의 기본 뼈대는 다음과 같습니다.
DirectShowSource("source.grf", fps=23.976, audio=false)
crop( 0, 132, -0, -132)
LanczosResize(1280,544)
크롭이랑 리사이즈는 알아서 하시면 되겠고 첫번째 줄만 참조하시면 되겠습니다.
코덱 종류에 따라 ConvertToYV12() 부분을 추가해줘야 하는 경우도 있습니다.
스크립트까지 작성했으면 그 다음은 다들 알아서 하실테지요.
비트레이트는 개인적으로
1080p - 8,000k~12,000k
720p - 3,000k~6,000k
정도를 권장합니다. 어디까지나 개인적인 의견입니다.
이상으로 설명을 마치겠습니다.