강좌 / 팁

소프트웨어 블루레이 원본에서 추출된 .Sup를 재생함에 있어서...

2011.06.22 19:40

동방전패 조회:17806

Blu-ray의 메인 무비 자막 스트림에 해당하는 부분을 추출(xxx.sup)해서 일반 mkv, mp4 등의 비디오 영상에서
이를 활용하고자 할 경우 다음과 같은 방법이 있습니다.

하나는 쉽게 외부 자막을 로드할 수 있는 대다수 재생기에 내장되어 있는 DirectVobSub 를 이용하는 방법으로써,
Bluray Sup---> Sub/idx 형태로 변환하여 일반 재생기의 내장 자막 렌더러에서 재생하는 방법입니다.
물론, 자막 품질은 좀 떨어지지만 눈깜작할 사이에 변환해서 손쉽게 볼수 있는 방법입니다.

다른 하나는 .sup 자막을 OCR를 이용한 순수 노가다의 세계로 진입하여 텍스트 자막인 srt로 변환하는 것입니다.
그래도 군입대보다 덜 고통스럽고 그럭저럭 해볼만 하겠지라고 도전해 보시는 용자는 되지 마시길...

마지막으로 아래에 기재할 내용으로써 추출된 .sup 자막 품질을 그대로 유지하면서 재생하는 방법입니다.
좀 더 소장용 작업에 적합한 방법이자 근본적인 해결책입니다.

내용이  좀 난해하다고 생각하시면 건너띄고

제일 밑에 설명한 (외부 로드가 아닌 스트림 형태로 재생하기)방식으로 곧바로 가시길 바랍니다.
시간나실 때 천천히 알아 가시는 것이 가장 좋은 방법입니다. 차후에는 최소 DirectShow Source 방식을 이용하시길 바랍니다.

어려운 순서부터 시작해서 나열합니다.

주의 사항(공통) :  .sup 파일을 자신이 재생할 비디오 영상에 맞게  BDSup2sub를 이용해 변환하는 작업이 선행되어야 합니다.
  
 예) Blu-ray에서 eac3to로 demuxing된 .sup 파일은 1080p 이므로 720p 영상에서 재생할려면 720p로 변환해 줘야 합니다.
      또한, 대다수 Blu-ray 규격이 아닌 Crop된 해상도의 비디오 영상이므로 자신이 직접 제작한 .sup 인 경우에도
      재생할 영상 크기에 맞는지 offset 값이 적절한지 다시 한번 살펴봅니다.
      BDSup2sub으로 Edit - move all captions 의 옵션에서 move outside bounds을 선택

      offset Y 값을 결정해 Move All 하는 걸 추천 !
       
---------------------------> 관련 내용 <-----------------------------------------

목차 :


1. 외부 자막 형식으로 로드하여 재생하기
    A) FFmpeg Source를 이용하기(AviSynth 를 이용)
    B) DirectShow Source를 이용하기(AviSynth를 이용)
    C) 외부 디코더를 이용하기

2. Stream 형태를 만들어 재생하기

<준비물 설치 >

첨부 파일 : Avisynth(258_MT_MSVC2010버전) ,ffmpegsource, SupTitle Plugin

                다운 가속기 이용(sup plugin.7z): https://www.mediafire.com/?miy89q5tqrt3j
                (개별 다운을 하실려면 mt 버전의 avisynth에 mt 버전의 Suptitle plugin의 조합이 맞어야 됩니다)

설치 방법:

FFmpeg Source 를 이용할 경우 : 제어판에서 .net Framework 4 Client Profile이 설치되어(Suptitle Plugin에 필요) 있지 않으면
                                                windows update를 통해  반드시 설치할 것
                                               
공통 : Avisynth 를 설치 한 뒤 첨부한 Plugins 폴더 내용물을 Avisynth의 설치 경로에 있는 Plugins 폴더에 붙여넣기 할 것.

         FFDshow : https://xhmikosr.1f0.de/index.php?folder=ZmZkc2hvdw==
         ffdshow audio/video decoder 의 Codecs 값에서 uncompressed/Raw Video --> all supported
         재생시 dts/dts-hd,Dolby TrueHD 24bit 포맷같은 경우 기호에 따라

         FFDShow Audio Decoder의 Output값을 24bit값을 제외한 체크해제
         
         Haali Media Splitter (https://haali.su/mkv/)혹은 LAV Splitter(추천) (https://github.com/Nevcairiel/LAVFSplitter)
         LAV Splitter 위주로 사용하시고 문제시에만 Haali(ffmpeg source 이용시 mkv의 parser 역활에 필요)를 이용
         
         
기타 : .avs 편집을  간편하게 하기 위해 AvsPmod : https://forum.doom9.org/showthread.php?t=153248
          WASAPI : ReClock (https://forum.slysoft.com/forumdisplay.php?f=85)

** MPC-HC에서 기본 오디오 렌더러 값을 ReClock Audio Renderer로 설정해서 사용하거나,

   Windows Media Player 12를 사용시 ReClock이 로드되도록 하실 것을 추천하며

  그 기준을 토대로 작성되어 있습니다.


################ 1. 외부 자막 형식으로 로드하여 재생하기 ##########################

.SUP 포맷(Presentation Graphic Subtiltes)을 단일 파일 형태로 가지고 있을 때
일반 재생기에서 로드하여 재생하는 방식은 크게 3가지 형식으로 나눌 수 있습니다.

<A: 첫번째 방식 - ## FFmpeg Source를 이용하는 방법 ## >

묻지마 인코딩의 A/V 의 경우 index 파일 형성시 에러가 발생하며,
또한 처음 실행시 index 파일이 생성되는데 재생 시간과 정비례하여 상당히 오래 걸린다는 단점이 있습니다.
그렇지만, 반드시 한번쯤은 알아두어야 할 과정입니다.


AvsPmod 혹은 메모장을 열어서 다음 점선 사이의  내용을 복사 - 붙여넣기 한 후 .avs 확장자로 저장한다.

---------------점선 사이의 내용 복사(64bit OS는 알맞는Plugin 경로 변경)---------------------------------

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\ffms2.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\SupTitle.dll")
A = FFAudioSource("영상(오디오) 파일 경로")
V = FFVideoSource("영상(비디오) 파일 경로")
AudioDub(V, A)
SupTitle("자막 파일 경로", forcedOnly=false, swapCbCr=false, relocate=true, relocOffset="0,0,0,0")


----------------------------------------------------------------------------------------------------


@ 64bit Os에서 .avs 의 간략한 예제(영구와 땡칠이.mkv 영상을 .sup 파일을 로드하여 재생하고자 할 경우)

LoadPlugin("C:\Program Files(x86)\AviSynth 2.5\plugins\ffms2.dll")
LoadPlugin("C:\Program Files(x86)\AviSynth 2.5\plugins\SupTitle.dll")
A = FFAudioSource("F:\Movie\영구와 땡칠이.mkv")
V = FFVideoSource("F:\Movie\영구와 땡칠이.mkv")
AudioDub(V, A)
SupTitle("D:\다운로드\자막 모음 폴더\맹구와 독수리 오형제.sup", forcedOnly=false, swapCbCr=false, relocate=true, relocOffset="0,0,0,0")

@ 저장된 .avs 파일을 재생하면 .ffindex 파일을 생성하는데 영상 재생 시간이 길수록 오래 걸리므로 참고 기다리면 됩니다.
.ffindex 파일 생성 후 .sup 파일이 자동으로 로드되어 재생기에서 재생되며,

대다수 다운받은 mkv,mp4는 Crop된 영상이므로 Crop된 영상을 기준으로 자막이 놓여진다고 보시면 됩니다.
   
@ wmp12 ----> FFDShow Audio Decoder + Reclock WASPI 모드  조합으로 ...
    mpc-hc---> ReClock 사용시 FFDShow Audio Decoder를 로드하지 않고 PCM이 ReClock 렌더러로 전달 재생되므로
                       필요한 경우 FFDShow Audio Processor를 이용 Downmixing 및 Output Format를 결정하면 됩니다.
    팟플은 AviSynth에 그리 적합한 재생기는 아니므로 패스....
   
   
<B: 두번째 방식 - ## Directshow Source 를 이용하는 방법 ## >

순서 :

a) 영상 파일을 드래그해서 AvsPmod로 드랍시키면 자동으로 Directshow 경로가 완성됩니다.
   (혹은 메모장에 미리 형식을 기재해 놓고 다른이름 저장을 활용하시면 됩니다.)

b) insert - plugin해서 Suptitle Plugin을  insert - file name에서 .sup 자막 경로를 지정하시면 됩니다. 저장 끝 !!

-----------------------점선 사이의 내용을 첨조하시길 바랍니다.-------------------------------

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\SupTitle.dll")
DirectShowSource("영상파일 경로")
SupTitle("자막 파일 경로", forcedOnly=false, swapCbCr=false, relocate=true, relocOffset="0,0,0,0")

---------------------------------------------------------------------------------------------

Directshow Source 방식는 오디오 문제로 팟플은 적합하지 못합니다.
wmp12/mpc-hc를 재생시 FFDshow A/V Decoder와 ReClock WASAPI 조합을 적극 추천합니다.

이 방법은 FFmpeg Source 방식에서 탈피하여 간단한 Script로  곧바로 재생할 수 있으며,
기본적인 Splitter를 이용하므로 좀 더 호환성 측면에서는 좋습니다.

재생에 사용되는 필터는 Source filter가 아닌 Splitter Filter를 이용하는 방식으로  재생시
LAV Splitter 혹은 Haali Media Splitter(AR)를 사용합니다.

일반적으로 Avsynth 의 script 파일에는 Haali가 많이 이용되어 왔지만 그동안 발전이 없는 관계로
계속 개발 중인 LAV Splitter를 사용해도 무관하며 오히려 다양한 오디오 포맷을 다룰 수 있습니다.


@@@ 위에 기재된 AviSynth 관련 Script는 기본값 위주입니다.
Avisynth는 인코딩을 많이 하시는 분들이 필수적으로 알아야 하는 과정이므로, 그 분들에게 Script 관련 내용을 물어보시면
좀 더 고급 옵션을 가르쳐 주실 것으로 생각되어 집니다. @@@


<C: 세번째 방식 - 외부 디코더를 이용하는 방법 >

이런 방법도 있다고 생각하시고 지금 당장 잊어버리시길 바랍니다.

FFDShow Video Decoder와 FFDshow DXVA Video Decoder를 이용할 때 자동으로 로드되는 .sup 재생에 있어서
옵션 - Subtitles - Bluray & DVD 값에서 Smoothing method값을 Full(Slowest)으로 해줘야 그나마 볼만 합니다.

그렇지만, Seek 할 경우 한참 동안 자막이 숨바꼭질, 경우에 따라 부분적으로 자막 재생이 이루어지지 않아
외국어 학습 효과를 드높입니다.
이는 아래 부분에 기재할 Stream 방식에서 Splitter 필터를 통해 불러 오는 경우와는 전혀 다른 것으로써,
왜 Stream 형식을 통해서 PGs를 분리 이미지 자막을 재생하는지를 극명하게 보여주는 예입니다.




################# 2. 외부 로드가 아닌 스트림 형태로 재생하기 ######################

외부 로드 방식은 근본적으로 AviSynth 방식이라 따라하기 좀 힘들겠지만,
스트림 형태는 누구나 따라 할 수 있습니다.

MKVToolnix(https://www.bunkus.org/videotools/mkvtoolnix/win32/)를 이용하여

.sup 자막을 끌어다 놓으시고 muxing하시면 됩니다.
이 경우 옵션값에서 forced값을 주면 자동으로 원하는 트랙이 일순위로 보여줍니다.
Default값일 경우 재생기의 Splitter 옵션에서 PGS 트랙을 선택하시면 됩니다.

m2ts/mkv 컨테이너 방식에서 스트림을 분리 및 관련 정보를 전달하는 기능인 합당한 Splitter가 설치되어 있다면

웬만한 일반 재생기는 Presentation Graphic Stream를 읽어들여 해당 이미지를 내장 자막 렌더러를 통해 보여줍니다.
(Bluray 포맷인 m2ts 로 컨테이너를 만들 때 표준 규격을 무시하는 묻지마 m2ts 를 만들지 마시길 바랍니다.)

m2ts 혹은 blu-ray 디스크 구조 만들기 : https://www.videohelp.com/tools/tsMuxeR

마지막으로 Stream 형태의 Bluray PGs를 재생함에 있어서
일반 재생기의 각 기본값으로 사용시  VLC > mpc-hc, 팟플를 추천하며
mpc-hc의 subtitle 관련 옵션에서 sub picture buffer값을 조절하시길 바랍니다.

(기본값 3에서 5 혹은 8까지 편할대로.. 클수록 좋음)

PGs는 smi, srt과 같은 텍스트 형식이 아닌 기본적으로 이미지 파일의 연속된 나열이므로

이를 디코딩할 시 buffer 할당이 잘 이루어져야 합니다.


재생기에서 Seeking 기능을 이용할 경우 자막이 사라지는 경우 주로 PGs 자막 제작에 있어서

일반 smi-->srt-->sup 자막으로 변환시 Overlapping 문제를 너무 소홀히 하는 결과로 일어납니다.
PC가 아닌 전용 Blu-ray 재생기와의 호환성도 고려해서 기본 Buffer할당 4MB를 초과하지 않도록

Sup 자막 제작시 이를 고려해야 합니다.

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4192 Server 2008 인증 없애기 [2] 쏘울군 18135 0 05-29
4191 윈 도 우| win7 설치 [4] eunnano 18124 1 11-24
4190 하드웨어| [HotSwap SATA(AHCI) 하드 만들기](초보주의) [43] 하늘_Ciel 18013 0 06-26
4189 소프트웨어| 걍 잡팁입니다... 므흣한거 숨기는방법.. [7] Lr라 18000 0 03-14
4188 윈 도 우| 윈도우 8 에서 설치안되는 드라이버 강제로 설치하기... [11] 은지아범 17962 5 09-05
4187 윈 도 우| vhdman으로 vdisk만들고 부팅메뉴 등록하기 [14] 하늘보기 17951 10 03-31
4186 윈 도 우| 윈도 XP/7 통합 설치 USB를 만들 때 쓰는 grub4dos 설정 파... [8] 커맨드파워 17915 4 10-29
4185 윈 도 우| IE9 탭분리가 안되는 경우 [5] 막장 17910 0 04-05
4184 윈 도 우| 간단하게 유투브 동영상 받기 [15] k-style 17897 9 02-26
4183 윈 도 우| 윈도우 8 설치후 하드가 계속 돌때(윈도우검색기능 끄기) [4] gooddew 17895 2 11-28
4182 윈 도 우| 서버 2012를 윈도우8처럼 최적화 01 [4] 우금티 17893 7 08-24
4181 윈 도 우| WIN 7 PE 만들기 동영상 (펌) [27] 다드 17864 0 04-16
4180 소프트웨어| [팁] Bluestacks에서 카카오톡 친구 추가하기 [6] 우울한헐크 17861 2 04-17
4179 윈 도 우| 크롬 깔끔한 터치친화 UI 쓰기 [13] 유기농초코 17858 7 06-13
4178 윈 도 우| [간단한 방법 추가] win8 내장 "종료버튼" 바로가기 [7] suk 17852 5 11-29
4177 서버 2008에서 AERO 활성화 하기. [70] 무수리 17845 0 02-03
» 소프트웨어| 블루레이 원본에서 추출된 .Sup를 재생함에 있어서... [5] 동방전패 17806 0 06-22
4175 기 타| 배치파일 정복 -2- gooddew 17803 1 09-10
4174 윈 도 우| imagex로 VHD 만들기 [8] 하늘보기 17783 9 03-24
4173 소프트웨어| Primo Ramdisk 사용하기 [14] 하늘보기 17774 23 05-27
XE1.11.6 Layout1.4.8