사람이 입체감을 느끼는 이유는 왼쪽 눈과 오른쪽 눈이 약간의 차이를 두고 떨어져 있기 때문입니다.

예를 들면 아래와 같이 빨간 벽과 파란 벽의 경계면 바로 앞에 서 있는 나무를 볼 때 왼쪽 눈에는 파란 벽 앞에 나무가 있는 것처럼 보이고

오른쪽 눈에는 빨간 벽 앞에  나무가 있는 것처럼 보이게 됩니다.

이렇게 두 눈이 바라보는 각도상의 차이로 인해서 시차가 발생하고 입체감을 느끼게 되는 것이죠.


3D 영상의 원리도 이와 동일합니다. 먼저 2대의 카메라가 각각 왼쪽 눈의 위치와 오른쪽 눈의 위치에서 촬영을 합니다.

이렇게 쵤영된 2개의 영상 중 왼쪽 카메라가 촬영한 영상은 왼쪽 눈에만, 오른쪽 카메라가 촬영한 영상은 오른쪽 눈에만 보이도록 만들어서

입체감을 느끼게 합니다. FPR(편광)이나 셔터글래스 등 방식은 여러가지가 있지만 이러한 기본 원리는 모두 똑같습니다.


블루레이 3D 디스크에도 역시 왼쪽과 오른쪽에서 촬영한 2개의 영상이 포함돼 있습니다.

하지만 AVC, VC-1, MPEG-2 등으로 압축(인코딩)되는 기존의 2D 디스크와는 다르게 MVC라고 부르는 AVC 확장 표준을 사용해서 압축됩니다.

MVC는 왼쪽과 오른쪽 중 기준이 되는 영상은 AVC로 압축하고 이 기준 영상을 참조해서 나머지 한 쪽 영상을 압축하는 방식입니다.

기준이 되는 영상을 Base View라고 하는데 보통은 왼쪽 영상이 Base View가 되지만 가끔은 오른쪽 영상이 Base View가 될 때도 있습니다.

기준 영상을 참조해서 압축되는 다른 한 쪽 영상은 기준 영상 없이는 디코딩이 불가능하기 때문에 Dependent View라고 부릅니다.


이제 본론으로 들어가서 블루레이 3D 영상의 인코딩 과정을 정리해 보겠습니다.

블루레이 3D 영상의 왼쪽과 오른쪽 영상을 디코딩해서 Side by Side, Over under, Frame Sequential 등의 방식으로 재인코딩하는 과정입니다.

처음 블루레이 3D 타이틀이 발매되기 시작했을 때에는 인코딩 방식도 복잡하고 속도도 아주 느렸지만 요즘엔 아주 간단하고 빨라졌습니다.



1. eac3to를 이용한 타이틀 구성 확인과 영상, 음성, 자막 등 추출

블루레이 3D 뿐만 아니라 블루레이 2D 인코딩에도 자주 쓰이는 툴입니다. (프리웨어라서 쉽게 구할 수 있습니다.)

블루레이 디스크가 삽입된 드라이브 또는 블루레이 디스크를 립핑한 폴더 경로를 입력하면 플레이 리스트 정보가 표시됩니다.

아래는 m:에 iso파일을 마운트해 놓고 eac3to에서 m:를 지정한 경우입니다.

C:\...\eac3to>eac3to m:

1) 00001.mpls, 00001.m2ts, 1:35:38

   - Chapters, 16 chapters

   - h264/AVC  (left eye), 1080p24 /1.001 (16:9)

   - h264/AVC (right eye), 1080p24 /1.001 (16:9)

   - DTS Master Audio, English, multi-channel, 48kHz

   - AC3, English, multi-channel, 48kHz

   - DTS Master Audio, French, multi-channel, 48kHz

   - AC3, Spanish, multi-channel, 48kHz

   - AC3, English, stereo, 48kHz

   - AC3, English, stereo, 48kHz


플레이 리스트가 1) 번 하나 뿐이고 하나의 m2ts 파일로 구성되어 있음을 알 수 있습니다.

하지만 플레이 리스트가 여러개의 m2ts 파일로 구성되는 경우도 가끔 있기 때문에 플레이 리스트의 구성 정보를 꼭 확인해야 합니다.

여러개의 m2ts 파일로 구성되는 경우 아래와 같은 형태로 표시됩니다.

1) 00006.mpls, 00001.m2ts+00002.m2ts+00003.m2ts+00004.m2ts+00005.m2ts, 1:42:43


다음으로 아래와 같이 플레이 리스트 1)을 추가로 입력하면 해당 플레이 리스트 1)의 트랙 리스트가 표시됩니다.

C:\...\eac3to>eac3to m: 1)

M2TS, 2 video tracks, 6 audio tracks, 9 subtitle tracks, 1:35:38, 24p /1.001

1: Chapters, 16 chapters

2: h264/AVC  (left eye), 1080p24 /1.001 (16:9)

3: h264/AVC (right eye), 1080p24 /1.001 (16:9)

4: DTS Master Audio, English, 5.1 channels, 24 bits, 48kHz

   (core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)

5: AC3, English, 5.1 channels, 640kbps, 48kHz

6: DTS Master Audio, French, 5.1 channels, 16 bits, 48kHz

   (core: DTS, 5.1 channels, 16 bits, 1509kbps, 48kHz)

7: AC3, Spanish, 5.1 channels, 640kbps, 48kHz

8: AC3 Surround, English, 2.0 channels, 192kbps, 48kHz

9: AC3 Surround, English, 2.0 channels, 192kbps, 48kHz

10: Subtitle (PGS), English

11: Subtitle (PGS), English

12: Subtitle (PGS), French

13: Subtitle (PGS), Spanish

14: Subtitle (PGS), French

15: Subtitle (PGS), Spanish

16: Subtitle (PGS), English

17: Subtitle (PGS), English

18: Subtitle (PGS), Spanish


표시된 트랙 리스트들을 보고 추출 또는 인코딩하려는 음성, 자막 트랙을 선택해서 각각의 출력 위치를 지정해 주면 추출, 인코딩이 진행됩니다.

여기에서는 2: 3: 번 트랙의 좌, 우 영상과 4: 번 트랙의 DTS-core 스트림을 각각 E:\bluray 폴더에 추출해 보겠습니다.

C:\...\eac3to>eac3to m: 1) 2: E:\bluray\left.h264 3: E:\bluray\right.h264 4: E:\bluray\bluray.dts -core

M2TS, 2 video tracks, 6 audio tracks, 9 subtitle tracks, 1:35:38, 24p /1.001

1: Chapters, 16 chapters

2: h264/AVC  (left eye), 1080p24 /1.001 (16:9)

3: h264/AVC (right eye), 1080p24 /1.001 (16:9)

4: DTS Master Audio, English, 5.1 channels, 24 bits, 48kHz

   (core: DTS, 5.1 channels, 24 bits, 1509kbps, 48kHz)

5: AC3, English, 5.1 channels, 640kbps, 48kHz

6: DTS Master Audio, French, 5.1 channels, 16 bits, 48kHz

   (core: DTS, 5.1 channels, 16 bits, 1509kbps, 48kHz)

7: AC3, Spanish, 5.1 channels, 640kbps, 48kHz

8: AC3 Surround, English, 2.0 channels, 192kbps, 48kHz

9: AC3 Surround, English, 2.0 channels, 192kbps, 48kHz

10: Subtitle (PGS), English

11: Subtitle (PGS), English

12: Subtitle (PGS), French

13: Subtitle (PGS), Spanish

14: Subtitle (PGS), French

15: Subtitle (PGS), Spanish

16: Subtitle (PGS), English

17: Subtitle (PGS), English

18: Subtitle (PGS), Spanish

s10 Extracting subtitle track number 10...

a04 Extracting audio track number 4...

a04 Extracting DTS core...

a04 Creating file "e:\bluray\bluray.dts"...

s10 Creating file "e:\bluray\bluray.sup"...

Video track 2 contains 137567 frames.

Video track 3 contains 137568 frames.

Subtitle track 10 contains 853 captions.

eac3to processing took 9 minutes, 49 seconds.

Done.


-core 옵션은 DTS-HD MA 트랙에서 core 스트림만 추출하는 옵션입니다. 이 외에 자세한 eac3to 옵션은 아래 링크를 참고하시면 됩니다.

http://en.wikibooks.org/wiki/Eac3to


2. AVS 스크립트 작성

블루레이 3D 영상의 디코딩에는 DGMVCSource 소스 필터를 사용하겠습니다.

(DGMVCSource의 자세한 사용법은 링크를 참조하세요.)

먼저 Side by Side 영상의 인코딩 스크립트입니다.

source=DGMVCSource("E:\bluray\left.h264", "E:\bluray\right.h264", view=0, frames=137567, hw=0)

left=selecteven(source)

right=selectodd(source)

stackhorizontal(left,right)

lanczosresize(1920,1080)


다음은 Over Under 영상의 인코딩 스크립트입니다.

source=DGMVCSource("E:\bluray\left.h264", "E:\bluray\right.h264", view=0, frames=137567, hw=0)

left=selecteven(source)

right=selectodd(source)

stackvertical(left,right)

lanczosresize(1920,1080)


마지막으로 Frame Sequential 영상의 인코딩 스크립트입니다. 아래와 같이 작성합니다.

DGMVCSource("E:\bluray\left.h264", "E:\bluray\right.h264", view=0, frames=137567, hw=0)


3. x264 인코딩

이렇게 만들어진 AVS 스크립트를 적당한 이름으로 저장하고 인코딩합니다.

여기에서는 Half Over Under 방식으로 스크립트를 작성하고 mvc.avs 로 저장해서 인코딩 하겠습니다.

cmd 창을 열고 다음과 같이 명령어를 입력하면 영상 인코딩이 시작됩니다.

E:\...\x264>x264 --crf 20 --preset slow --ref 4 --frame-packing 4 --output bluray3d.264 mvc.avs


avs [info]: 1920x1080p 0:0 @ 24000/1001 fps (cfr)

x264 [info]: using cpu capabilities: MMX2 SSE2Fast FastShuffle SSEMisalign LZCNT

x264 [info]: profile High, level 4.1

[0.1%] 107/137569 frames, 5.87 fps, 3540.18 kb/s, eta 6:30:12


--crf 옵션은 압축 수준을 정해주는 옵션입니다. 숫자가 낮을수록 화질이 좋아지고 파일 크기는 커집니다. 기본값은 23입니다.

--preset 옵션은 압축 효율을 정해주는 옵션입니다. ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo 를 사용할 수

있습니다. 기본값은 medium 입니다. 뒤로 갈수록 인코딩 속도는 느려지지만 압축 효율이 좋아집니다.

--ref 옵션은 참조 프레임의 수를 정해줍니다. AVC 레벨 4.1을 넘지 않기 위해서 4로 제한했습니다. PC에서 재생하는 경우에는 레벨 4.1을 넘어도

상관없지만 하드웨어 재생기의 경우 레벨 4.1을 넘는 영상은 제대로 재생을 못 하는 경우가 있기 때문입니다.

--frame-packing 옵션은 파일 헤더에 3D 영상의 포맷을 알려주는 플래그를 삽입해주는 옵션입니다. 아직은 해당 플래그를 제대로 인식하는 플레이어가

거의 없기 때문에 불필요한 옵션이지만 혹시 모르니 해놓으면 좋겠죠. 옵션 별 포맷은 다음과 같습니다.

- 0: checkerboard - pixels are alternatively from L and R

- 1: column alternation - L and R are interlaced by column

- 2: row alternation - L and R are interlacedby row

- 3: side by side - L is on the left, R on the right

- 4: top bottom - L is on top, R on bottom

- 5: frame alternation - one view per frame

--output 옵션은 출력 파일의 위치를 정해주는 옵션입니다.

mvc.avs 처럼 명령줄의 마지막에 인풋 파일을 적어주면 됩니다.


4. 영상, 음성, 자막 등 합치기(먹싱)

마지막 단계입니다.

추출 또는 인코딩한 영상, 음성, 자막 등을 각종 컨테이너에 담아 줍니다.

mkvmerge, mp4box, tsmuxer 등으로 각각의 파일들을 불러와서 먹싱(Multiplexing) 해주면 완성입니다.






Posted by 김코덱

댓글을 달아 주세요

  1. Kamihikouki 2014.07.19 14:49 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 김코덱님 다름이 아니라..
    오랜만에 또 질문 할 것이 있어 들을 올리게 되었습니다.
    매번 질문만하여 죄송하네요..

    다름이 아니라 3d 블루레이 타이틀 영상 추출중..
    문제기 발생하여 문의 드립니다.

    겨울왕국은 몇달점 잘 3d영상 및 자막으로 인코딩이 잘되었는데
    겨울왕국 특전에 있는 미키마우스 3d 특전을 추출하여 작업하려 하는데요..

    http://postto.me/15/apm.png
    http://postto.me/15/ape.png

    위 2개의 이미지 참고 부탁드립니다.

    eac3to에는 비디오가 2개가 있다고 나오는것 같은데..리스트에는 보여지지가 않아
    3d영상 및 sup자막을 추출하지 못하고 있네요..

    dvdfab에는 확연히 특전이 보여지기는 하는데..
    sup자막을 추출할수가 없어 고생중입니다.

    해결책을 주셨으면 합니다..

    eac3to에는 어찌해야 특전 3d영상과 3d자막까지 보여지고 추출이 가능 한지..
    정말 궁금하네요..

    • 김코덱 2014.07.19 19:32 신고  댓글주소  수정/삭제

      우선
      eac3to m:
      이런식으로 입력해서 특전 영상에 해당하는 플레이 리스트가 있는지 확인해 보시고요
      특전 영상의 플레이 리스트가 없으면 직접 파일 경로를 지정해서 추출하시면 됩니다
      보니까 특전 영상의 m2ts파일 번호가 200인 것 같은데요
      그러면 블루레이 디스크의 ssif 폴더에 00200.ssif 파일이 있을 겁니다
      이 파일을 eac3to에서 바로 불러와서 추출하시면 됩니다

    • Kamihikouki 2014.07.19 19:56 신고  댓글주소  수정/삭제

      특전영상이

      00936.ssif
      00339.ssif
      00940.ssif
      00943.ssif

      위 파일 인듯 한데요

      위 3개 파일을 1개로 먹스 + sup자막을 추출하려면
      어찌 해야할까요?

  2. Kamihikouki 2014.07.19 19:59 신고  댓글주소  수정/삭제  댓글쓰기

    또한 일전에 알려주신 idx를 3d자막으로 명령어..

    sub2d3d(source, format=1, depth=4)

    function sub2d3d(clip src, int "format", int "depth")
    {
    vobsub="C:\Users\Kaminikouki2_Not\Desktop\미키 3d\TEST_00.idx"
    orgw=src.width
    orgh=src.height
    tabh=orgh/2
    sbsw=orgw/2
    (format==1) ? stackhorizontal(crop(src,0,0,-sbsw,0).lanczosresize(orgw,orgh)
    \.addborders(0,0,depth,0).SupTitle(sub).crop(0,0,-depth,0),
    \crop(src,sbsw,0,0,0).lanczosresize(orgw,orgh)
    \.addborders(depth,0,0,0).SupTitle(sub).crop(depth,0,0,0))
    \ : stackvertical(crop(src,0,0,0,-tabh).lanczosresize(orgw,orgh)
    \.addborders(0,0,depth,0).SupTitle(sub).crop(0,0,-depth,0),
    \crop(src,0,tabh,0,0).lanczosresize(orgw,orgh)
    \.addborders(depth,0,0,0).SupTitle(sub).crop(depth,0,0,0))
    return lanczosresize(last,orgw,orgh)
    }


    위와 같이 입력을 하면 에러메시지가 출력되는데

    혹 어디가 잘못 된것일까요?

    김코덱님 덕분에 sup smi는 잘불러와지는데

    정작 특전 sup추출이나 특전 영상 추출법을 모르고..

    idx 3d자막이 안불러와지니

    헤매고 있네요..

    • 김코덱 2014.07.19 22:39 신고  댓글주소  수정/삭제

      자막 파일이 idx니까 스크립트의 SupTitle(sub) 부분을 전부 textsub(vobsub) 으로 바꾸셔야겠네요

    • Kamihikouki 2014.07.19 22:52 신고  댓글주소  수정/삭제

      말씀하신대로 바꾸어도 에러메시지가 발생 되네요.

      http://postto.me/15/o76

      위 화면이 에러메시지 창입니다.

    • 김코덱 2014.07.19 23:06 신고  댓글주소  수정/삭제

      sub/idx 자막은 이미지 형식이니까 textsub이 아니라 vobsub으로 바꿔야겠네요
      그리고 예제를 보니까 sub파일을 불러오던데 idx파일을 불러와도 되나요?
      아무튼 textsub 대신 vobsub으로 바꿔서 해보세요

    • Kamihikouki 2014.07.19 23:15 신고  댓글주소  수정/삭제

      특전 SUB가 추출이 안되서

      DVD FAB로 특전을 추출하니 IDX 자막 파일이 추출되어서요

      IDX를 3D로 만들어 보려하는데

      혹 지금 상태에서 특전과 SUP를 추출하는 방법이 있다면 알려주시면

      감사하겠습니다..

  3. Kamihikouki 2014.07.19 20:57 신고  댓글주소  수정/삭제  댓글쓰기

    http://postto.me/15/cck.png

    eac3to m:

    로딩 결과입니다.

    부디 도움을 주셨으면 합니다..

    • 김코덱 2014.07.19 22:42 신고  댓글주소  수정/삭제

      http://postto.me/15/ape.png
      이 화면에 보이는 6분 1초짜리 영상이 특전 영상 아닌가요..?
      아무튼 tsmuxerGUI 최신버전이 3D 블루레이를 지원합니다
      위에서 특전 영상이라고 말씀하신
      00936.ssif
      00339.ssif
      00940.ssif
      00943.ssif
      파일들을 tsmuxerGUI로 합친 다음 eac3to로 추출하시면 되겠네요
      아니면 바로 txmuxerGUI에서 추출하셔도 됩니다

    • Kamihikouki 2014.07.19 22:54 신고  댓글주소  수정/삭제

      말씀하신대로 프로그램을 받아서

      http://postto.me/15/ozm

      위와 같이 열어보았는데 SUP가 따로 따로 추출 돠는것 같은데

      SUP자막을 합치는 방법은 없는 건지요?

      EAC3TO자체에서 자막 추출을 하려하였는데

      리스트에서 보여지지가 않으니 작업이 되지 않아서요..

    • 김코덱 2014.07.19 23:09 신고  댓글주소  수정/삭제

      이렇게 불러오시면 스트림이 병렬로 연결되거든요..지금은 직렬로 연결하려는 거니까
      우선 00936.ssif 파일을 add 버튼으로 불러오시고요
      그 다음 파일부터는 join 버튼으로 불러오셔야 직렬로 연결이 됩니다

  4. Kamihikouki 2014.07.19 23:19 신고  댓글주소  수정/삭제  댓글쓰기

    http://postto.me/15/miy
    http://postto.me/15/miq

    알려주신대로 JOIN을 눌러 리스트에 추가한 다음

    변환까지 하였는데

    영상을 틀어보니 자막이 SUP로 다들어오긴 한것 같은데..

    한국어 자막이 깨지네요..

    어찌해야 할까요?

    • 김코덱 2014.07.19 23:35 신고  댓글주소  수정/삭제

      팟플에 문제가 있는지 자막 자체에 문제가 있는지 확인을 해봐야겠죠
      어차피 인코딩하려고 하시는 것 같은데 그러면 sup파일만 추출해서
      suptitle 필터에서 제대로 불러와지는지 확인해보세요
      tsmuxerGUI에서 한국어 pgs에만 체크하고 demux 하시면 됩니다
      인코딩에 dgmvcsource를 쓰시는 거면 왼쪽, 오른쪽 화면이랑 오디오도 같이 추출하셔도 되고요

    • Kamihikouki 2014.07.19 23:38 신고  댓글주소  수정/삭제

      sup는 이상태에서 어떻게 추출해야 하나요?

    • 김코덱 2014.07.19 23:56 신고  댓글주소  수정/삭제

      http://postto.me/15/miy
      여기 화면을 보시면 중간에 여러개의 트랙들이 보이고 전부 왼쪽에 체크가 돼있죠
      이 중에서 원하는 트랙에만 체크를 놔두고 나머지는 다 없앤 다음 output 항목을 demux로 바꾸고
      start demuxing 클릭하시면 됩니다
      sup 파일만 추출하려면 한국어 pgs에만 체크해 놓고 하시면 되겠죠
      그리고 인코딩에 dgmvcsource를 쓰시는 거면 왼쪽, 오른쪽 영상도 필요할 테니까
      같이 추출하시라고 말씀드린 거고요

    • Kamihikouki 2014.07.20 00:01 신고  댓글주소  수정/삭제

      정말 감사드립니다.

      정말 좋은 툴이네요.

      또다시 김코덱님의 도움으로 인코딩을 할수 있게 되어

      기쁩니다. 매번 신세만져서 죄송하기도 하네요..

  5. 아무개 2014.08.12 11:28  댓글주소  수정/삭제  댓글쓰기

    EAC3to GUI 프로그램
    Another EAC3to GUI Plus
    어떻사이트에서 받은적 있는데 기억이 않나네요
    사용방법은 모릅니다
    기억 나는건 제작 사이트가 있는데 여러가지둘도 같이 받을수게 되어 있어요
    필수 프로그램도 있고 선택 프로그램도 있어요
    Windows을 오래전에 설치 할때 백업을 못해서 프로그램이 없네요
    http://forum.doom9.org/showthread.php?t=154126 참고 하세요
    블루레이 릴을 안하기 때문에 필요가 없어요

  6. Yo-O 2015.05.05 08:50  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 ligel님
    벌써 몇년 전이네요 2010년으로 기억나는데
    ligel님 도움을 받아 에일리언 대 몬스터 그리고
    드래곤 길들이기 3D SBS 영상을 인코딩 한적이 있었네요
    당시에 ligel님이 알려주셨을 때는 DGMVCSource 가 아닌 dss2를 이용했었죠.
    그런데 위 두 영상 이후로는 3D Stereoscopic SBS 영상을 인코딩 해 보질 않아서 다 까먹었는데
    얼마 전 연주회 하나를 Stereoscopic 영상으로 담게 되었었죠.
    2대의 파나소닉 GH4로 1080P 60 fps(정확히는 59.940 fps) 왼쪽과 오른쪽 영상을 동시에 각각 담은 뒤 싱크까지 마쳤고요.
    Full Size MKV로 인코딩 하기위해 tsMuxeR를 이용해 영상과 음성을 분리해놓은 상태입니다.

    위에 적었지만 3D SBS 영상을 인코딩 한지가 오래되어 다 까먹은 터라
    이 번에는 DGMVCSource를 이용해 3D SBS 영상을 만들고 있는데 avs 스크립트를 잘 못 짰는지
    avs 스크립트를 MeGui 에서 불러와도 창이 뜨질 않고 모래시계만 계속 돌더군요.

    지금까지 제가 작업한 상황은 다음과 같습니다.
    싱크를 맞춘 Left.mp4 와 Right.mp4 영상을
    tsMuxeR를 통해 Left.264, Left.aac, Right.264 그리고 Right.aac 로 영상과 음성을 분리해놨습니다.
    물론 AviSynth를 설치 하였고요 AviSynth의 Plugins 폴더에 DGMVSouce 관련 파일들을 넣어 놨구요

    질문은 다음과 같습니다.
    이 영상은 1920 x 1080 의 크기와 초당 59.940 fps 로 촬영이 되었습니고 총 프레임 수는 201600 이고요.
    이 두 영상을 원본 초당 프레임 수( 59.940 fps )를 유지한채로 3840 x 1080 크기의 Full Size SBS MKV 영상으로 인코딩할
    avs 스크립트를 만들고 싶어 이렇게 질문 드려봅니다.
    감사합니다. ^^

    PS. 제가 아는 한 블루레이 3D Stereoscopic 영상의 경우
    1080P 일 경우는 24 fps 나 23.976 fps 이고
    720P 일 경우에 60 fps 나 59.940 fps 이 사용 가능한 걸로 알고있지만
    3D Stereoscopic 블루레이 만들 게 아니라면 초당프레임을 유지시켜도 되는 건 아닌가요? ^^

    • 김코덱 2015.05.05 15:09 신고  댓글주소  수정/삭제

      안녕하세요 Yo-O님
      3D 블루레이 처음 나왔을 때 마땅한 디코더가 없어서 JM으로 겨우 디코딩하고
      디코딩된 YUV영상을 다시 rawsource로 불러와서 인코딩하던 게 생각나네요
      영화 본편은 하드 용량이 부족해서 3D 트레일러만 테스트용으로 인코딩해보고 그랬었는데..
      그게 벌써 5년 전이군요 ㅎㅎ;

      아무튼 카메라 2대로 따로 찍으신 거면 MVC 영상은 아니지 않나요?
      3D 영상이 MVC가 아니라면 DGMVCSource를 사용하실 필요는 없습니다
      그냥 영상 두 개를 각각 불러와서 stackhorizontal 같은 필터로 붙이면 되거든요
      스크립트는 대충 아래와 같이 작성하시면 될 겁니다

      left=dss2("left.264").assumefps(60000/1001)
      right=dss2("right.264").assumefps(60000/1001)
      stackhorizontal(left,right)

      264파일이 바로 불러와지지 않으면 mkv나 ts 같은 컨테이너에 담아서 불러오시면 될 겁니다
      싱크를 맞춘 mp4 영상을 아직 가지고 계시면 mp4 영상을 바로 불러오셔도 되고요

      ps. 3840x1080에 60fps면 재생이 될지 잘 모르겠네요;
      어떤 방식으로 재생하실 건지는 모르겠지만 우선 짧은 영상으로 테스트를 해보시는 게 좋겠네요

    • Yo-O 2015.05.05 17:14  댓글주소  수정/삭제

      안녕하세요 Ligel님
      5월5일 어린이날에도 답글을 달아주시네요오 ^^
      네, 벌써 5년이 지났네요.
      당시에 Ligel님이 드래곤 길들이기 영상 샘플을 올려주셨었고
      제가 풀 영상을 인코딩 했었었죠 ^^
      네, 두대의 카메라로 찍은 터라 MVC영상은 아니고
      싱크 맞춘 mp4파일 역시 갖고있고요 ^^
      말씀하신대로 mp4로 한 번 해봐야겠네요

      left=dss2("left.mp4").assumefps(60000/1001)
      right=dss2("right.mp4").assumefps(60000/1001)
      stackhorizontal(left,right)

      위와 같이 하면 되겠죠?
      assumefps 내용은 60프레임이네요
      기존 영상 프레임을 유지하고 싶으면 59940 을 60000 대신에
      넣으면 되는거죠? 저도 3840 x 1080 60fps 가 재생이 될련지 모르겠네요 블루레이 디스크 규격으로는 1080P의 경우는 60fps 를 지원 안하더군요 720P 에서는 60fps 지원하고요 ^^
      일단 알려주신 방법대로 시도해보겠고요
      친절한 답변에 감사드립니다. ^^
      http://ko.wikipedia.org/wiki/%EB%B8%94%EB%A3%A8%EB%A0%88%EC%9D%B4_%EB%94%94%EC%8A%A4%ED%81%AC

    • Yo-O 2015.05.05 20:37  댓글주소  수정/삭제

      알려주신대로 avs를 만든 뒤
      MeGUI에서 불러왔더니 다음과 같은 에러가 나오네요
      Can't open Left.264:80040217
      (H:\Prerender\Neon 3D.avs, line 1)
      내용으로 봐서는 제가 avs 스크립트를
      문법에 맞지 않게 적은듯 한데
      ligel님이 알려주신대로 적었는데도 이렇다는 건
      필요한 필터가 없는거일 수 있겠네요

      방금 264말고 mp4 를 불러오니 이 건 잘 불러와지네요 ^^

      2015년 5월 5일 오후 8시30분 추가사항
      mp4 파일을 불러올 시 정상적으로 MeGui로 불러와지고
      화면도 정상적으로 나와서 와! 드디어 되는구나 했는데요
      문제는 MeGui Video encoding -->Config 들어가서 설정까지
      다 한 뒤 Queue를 누르면 첫 단계에서 오류가 나고 진행이 되질 않더군요. 오류가 났다고만 나오지 어떠한 오류가 났는지가 나오질 않네요.
      옵션을 이것저것 만져보고는 있는데 아직까지 오류가 나네요
      희안한 건 avs 파일을 AvsPmod 에서 불러온 뒤 재생을 시키면 정상적으로 됩니다.

    • 김코덱 2015.05.05 20:37 신고  댓글주소  수정/삭제

      264파일은 컨테이너에 담기지 않은 상태라서 컴퓨터에 parser가 있어야 불러올 수 있을 겁니다
      아무튼 mp4파일을 갖고계시다니 다행이네요 뭐 264파일을 다시 mkv나 ts로 바꿔도 되긴 하니까 큰 상관은 없지만요
      그리고 assumefps(60000/1001) 이건 60fps가 아니고 59.94fps 입니다
      60000을 1001로 나누면 59.94가 나오거든요
      assumefps는 꼭 써야하는 건 아니지만..가끔 dss필터가 fps를 잘못 읽는 경우가 있어서 써주는 편이 좋습니다

    • 김코덱 2015.05.05 20:40 신고  댓글주소  수정/삭제

      댓글이 동시에 달렸군요 ㅎㅎ;
      아무튼 뭔가 메구이에서 문제가 있는 것 같은데 글만 봐서는 잘 모르겠네요;
      꼭 메구이로만 하실 게 아니라면
      http://ligel.tistory.com/72
      이 글에 있는 배치파일을 쓰셔도 됩니다
      왼쪽, 오른쪽 파일을 끌어다가 올려놓기만 하면 되니까 더 편하긴 하죠
      아무튼 메구이 에러 관련해서는 에러 로그를 잘 살펴보시는 수밖에 없겠네요;

    • Yo-O 2015.05.05 21:15  댓글주소  수정/삭제

      http://ligel.tistory.com/72 <--- 단순하게 좌우 영상 붙이는 것만 이라면 드랙앤 드롭이니 더 편할듯한데요 한 번 해봐야겠네요 ^^
      감사합니다. ^^

    • Yo-O 2015.05.07 17:57  댓글주소  수정/삭제

      올려놓으신 배치파일 편집해서 성공적으로 인코딩 하였네요!
      그러나...PC에서는 정상적으로 재생이되는데
      3D TV에서는 지원하는 포맷이 아니라고 나오네요 ^^;;
      초당 프레임을 59.940에서 24프레임으로 바꿔보면 나올려나 하고있네요 ^^ 여튼 감사다하다는 말 전하려고 왔는데 혼자 궁시렁 거렸네요 ^^
      도움 감사드립니다 Ligel님 ^^

  7. H265 2015.10.06 04:53  댓글주소  수정/삭제  댓글쓰기

    스크립트를 본문과 같이 작성후에 (sbs)
    avsp에서 영상이 불러와지면 왼쪽오른쪽 영상이 보이는데요~

    키보드 화살표 아래표시를 누르면 영상이 건너뛰기가 안되는현상이 있고
    마우스로 포인트를 찍어서 35분정도의 스크린을 avsp로 보고싶어도 오른쪽 화살표로 35분을 누르고 있어야 합니다 ㅠㅠ

    다른 보통의 2d ffvideosource의 경우는 이런현상이 없는데
    DGMVCSourced의 경우만 이런현상이 나타납니다.

    인코딩을 하려는데 일단 avsp에서 보여지는 화면을 봐야하는데
    avsp에서 영상을 하염없이 오른쪽 화살표 키보드로 보고자 하는 시간에 도달해서야 보여지는것에 대한
    다른방법이 없는지 궁금해서 질문드려봅니다~

    키보드 화살표 아래버튼을 누르면 건너뛰기가 되야 하는데
    프레임은 건너뛰기가 되는데 보여지는 영상은 그대로 가는 현상이 있습니다.

    • 김코덱 2015.10.06 20:16 신고  댓글주소  수정/삭제

      DGMVCSource는 임의적 탐색이 안 됩니다
      첫 프레임부터 순서대로 디코딩만 해주기 때문에 어쩔 수 없습니다
      대충 검색을 해봤는데 아직은 임의적 탐색이 가능한 무료 MVC 디코더는 없는 것 같습니다

      아무튼 소스필터 자체가 그런 거니까 별다른 방법은 없고요
      새로운 무료 디코더가 나오길 기다리시는 수밖에 없겠네요
      검색하다보니 FrimSource라는 필터가 있던데 이것도 DGMVCSource와 비슷한 거네요

  8. H265 2015.10.06 22:42  댓글주소  수정/삭제  댓글쓰기

    아 원래 그런거였군요 감사드립니다!
    그렇다면 인코딩전에 테스트를 해보고 싶은데
    테스트 인코딩이 불가능한가요;;

    원본 vs 인코딩의 차이를 테스트로 확인하고 인코딩을 해야 하는데
    테스트를 해도 각 프레임을 맞출수가 없으니 난감하네요;;
    이런경우 다른 방법이 있을까요~

  9. H265 2015.10.08 01:07  댓글주소  수정/삭제  댓글쓰기

    그렇군요 ㅎㅎ 댓글 감사드립니다 꾸벅!
    여쭤보는김에 한가지 더 귀찮게 해드려도 될까요 ㅠㅠ

    http://pastebin.com/AZbneD5u/

    이것은 블루레이 영화의 스크립트입니다.

    스크립트 맨 위문단의
    safe=Crop(4, 2, -0, -2)
    ConvertToYV24()
    base1=Crop(0, 2, -0, -2)

    이부분은 왜 이렇게 한건지 도통 이유를 모르겠습니다.
    Spline36Resize 까지는 이해가 가는데
    그 아래 저 3줄은 뭔지;; ConvertToYV24()은 색조정 필터인것으로 아는데 전체가 rgb일텐데 왜 저것으로 변환을 하는지도 의문입니다;

    # Left

    Left1 = Crop(0, 0, 1 - Width(), 0).Tweak(cont=1.17)
    Left2 = Crop(1, 0, 2 - Width(), 0).Tweak(cont=0.98)
    Left3 = Crop(2, 0, 3 - Width(), 0).Tweak(cont=1.02)
    Left4 = Crop(3, 0, 4 - Width(), 0).Tweak(cont=1.005)
    StackHorizontal(Left1, Left2, Left3, Left4, base2)

    ConvertToYV12()
    Overlay(last, safe, x=4, y=2)

    또 이부분에서 왼쪽 크롭을 정밀하게 수동으로 하는것으로 알고 있는데요~
    각각의 명령의 의미를 모르겠습니다. 조금더 자세하게 알고싶어서 질문드려봅니다.
    오버레이가 왜 쓰이는지도 궁금하군요.

    그리고 밴딩부분에서

    function FDeb(clip c) {
    a = c
    b = c.GradFun3(thr=0.45)
    th_low = 20
    th_high = 35
    dmask = b.levels(th_low,1.0,th_high,255,0,false)
    h=a.mt_merge(b,dmask,U=3,V=3,luma=true)
    repair(a, h, 15)
    return last
    }

    이 부분의 의미를 모르겠습니다 GradFun3 필터를 이렇게 사용하도록 정형화 되어 있는지도 궁금하고
    function FDeb(clip c) { 이 부분부터 return last 까지 왜 이렇게 쓰는지 자세히 알수 있었으면 좋겠습니다 ㅠㅠ

    더불어 혹시 이런 설명이 나와있는 사이트라든지 있다면 링크걸어주셔도 좋고
    저 스크립트의 의미를 꼭 알고 넘어가고 싶은데 정말 열심히 찾아보다가 막혀서
    김코덱님께 마지막으로 왔습니다ㅠㅠ 꼭 집고 알고 넘어가고 싶은 스크립트입니다ㅠㅠ

    아시는 부분만이라도 꼭 설명을 자세히 듣고 싶습니다.
    링크도 괜찮고 무엇이든 알고지나가고 싶은 강한 욕망?이 있어서 ㅠㅠ

    꼭 부탁좀 드리겠습니다 꾸벅꾸벅

    • 김코덱 2015.10.08 22:47 신고  댓글주소  수정/삭제

      전체적으로보면
      우선 화면 가장자리를 다듬어준 다음
      특정구간에만 밴딩필터를 적용하는 스크립트입니다
      개인적으로 이렇게까지 해야하나 하는 생각이 드네요 ㅎㅎ;

      아무튼 어디서 구하셨는지 모르겠지만 왼쪽 4픽셀과 위, 아래쪽 2픽셀을 다듬으려고 사용한 스크립트네요
      우선 왼쪽 4픽셀과 위, 아래쪽 2픽셀을 제외한 부분을 safe 클립으로 지정을 하고요

      먼저 위, 아래쪽 2픽셀을 다듬기 위해 base1 클립을 위, 아래쪽 2픽셀씩 크롭해서 지정합니다
      다음으로 위쪽부터 첫 번째 라인을 top1으로 지정하고 두 번째 라인은 top2로 지정해서 tweak 필터를 적용합니다
      다음으로 아래쪽부터 첫 번째 라인을 bottom1로 지정하고 두 번째 라인은 bottom2로 지정해서 tweak 필터를 적용합니다
      이제 top1 top2 base1 bottom2 bottom1 순으로 위에서 아래로 붙여주면 원본 크기와 같은 영상이 나오겠죠

      위 과정을 똑같은 방식으로 왼쪽 4픽셀에 적용하는 겁니다
      그래서 left1 left2 left3 left4 base2 순으로 왼쪽에서 오른쪽으로 붙여주면 또 원본 크기와 같은 영상이 나오게 됩니다

      다음으로 overlay 필터를 사용해서 위에서 얻은 원본 크기 영상 위에 safe 영역을 올려주면
      왼쪽 4픽셀과 위, 아래 2픽셀씩의 가장자리 부분에 tweak 필터가 적용된 영상이 만들어지는 거죠
      converttoyv24()를 하는 이유는 1픽셀씩 크롭하기 위해섭니다..yv12에서는 짝수로만 크롭이 가능하기 때문에
      우선 yv24로 바꿔주고 크롭 작업을 마친 다음 yv12로 다시 바꿔주는 겁니다
      그리고 마지막으로 balanceborders 필터를 적용해서 수정된 가장자리 부분을 다듬어 주는 거죠

      마지막으로 밴딩 부분은 banding.txt 로 지정된 구간에만 f3kdb 필터를 적용하는 겁니다
      conditionalfilter와 conditionalreader를 사용해서 특정 구간에만 밴딩 필터를 적용하려는 건데
      중간에 있는

      function Fdeb(clip c) {
      ...
      ...
      ...
      }

      이 부분은 필터를 정의하는 부분입니다
      이렇게 Fdeb라는 필터를 새로 정의해놓고 스크립트 내에서 자유롭게 사용할 수 있습니다
      올려주신 스크립트에서는 fdeb라는 필터를 정의만 해놓고 사용하지는 않고 있네요;
      제 생각에는 f3kdb나 fdeb 둘 중에 하나는 잘못 쓴 것 같습니다
      둘 다 f3kdb이거나 둘 다 fdeb여야 아귀가 좀 맞죠;
      아니면 fdeb를 사용할지도 모르니까 그냥 정의만 해놓은 걸 수도 있고요

  10. H265 2015.10.09 00:30  댓글주소  수정/삭제  댓글쓰기

    천천히 읽어보면서 이해하겠습니다 감사드립니다 ㅠㅠ

    필터의 쓰임은 항상 비슷하게 해왔는데 뜻을 모르고 그냥 붙여넣으니 여간 찝찝한게 아니었는데 큰 도움을 얻어 갑니다~

    계속 읽어보며 이해하도록 해야겠습니다 ㅠㅠ

    저도 이런식으로 크롭을 하는것에는 이해가 가지 않지만;;

    밸런스보더로만 가장자리 라인을 잡아줘도 괜찮을것을 왜 이렇게 하는지는 모르겠습니다.

    아마도 영상전체에 불규칙하게 여백이 있는 것이라면 필요할지도 모르겠습니다..



    fdeb을 쓴 이유는 GradFun3(thr=0.45)필터로 밴딩을 잡아주기 위함으로 생각합니다.

    f3kdb과 GradFun3는 밴딩필터인데 쓰임새가 다른걸로 알고 있습니다..

    banding.txt 에 f3kdb과 GradFun3의 구간을 서로 다르게 정해서

    각 영상마다 다른 디밴딩을 하는것으로 생각됩니다.

    return last라는 명령은 어떨때 쓰이는것인지 궁금합니다. 다시 마지막으로 가르는 것인가요 ㅎㅎ


    아 그리고 3d sbs half 인코딩으로 다시 돌아가서

    초중반까지 잘 인코딩 되고 있다가

    중간부분부터 그냥 검은 화면으로 인코딩이 되는 현상이 있습니다 ㅠㅠ

    몇번을 다시 해봐도

    초중반까지는 잘 되다가 중반부분부터 급속히 빨라지는 속도에 이상하다 생각했는데

    완성되고 보니 중반부분부터는 아예 검은 화면으로만 인코딩이 되었던 거였습니다;;

    이런 현상에 대해 혹시 뭐가 잘못되서 이렇게 나오는지 아시는지요~

    • 김코덱 2015.10.09 00:48 신고  댓글주소  수정/삭제

      밴딩과 관련해서 말씀드리면 올려주신 스크립트를 잘못 이해하신 것 같습니다;
      위에서 말씀드린대로 fdeb는 정의만 해놓고 사용하질 않고 있거든요
      그러니까 fdeb 안에 있는 gradfun3도 적용이 안 되고 있는 거죠

      return last 는 스크립트의 마지막 클립을 출력하라는 뜻입니다

      검은 화면 인코딩은 잘 모르겠네요;
      아무래도 DGMVCSource 문제인 것 같은데 사용하는 사람이 많지 않으니 원인 찾기가 힘들 겁니다

  11. H265 2015.10.09 02:06  댓글주소  수정/삭제  댓글쓰기

    무슨말씀이신지 알겠습니다 ^^
    Trim(0, 1284).FDeb() 이런식으로 스크립트상에는 보이지 않는군요;

    f3kdb와 gradfun3를 각기 다른 용도로 사용하는 이유가 있을까요?

    디밴딩을 위해 사용하는 필터인것은 알겠는데
    그레인의 유무에 따라 다른필터를 사용하는건지..
    흑백 영화에는 gradfun3를 사용한다던지 뭐 이런것이 있는지도 궁금합니다.

    3d인코딩의 경우는 DGMVCSource 버전이 오래된것인가 해서 바꿔서 해보고 있습니다 ㅠㅠ

    늦은밤 댓글 대단히 감사드립니다.
    평안한밤 되십시오.
    감사합니다.♡


    • 김코덱 2015.10.10 00:24 신고  댓글주소  수정/삭제

      f3kdb나 gradfun3는 들어보긴 했지만 사용해본 적은 없거든요
      둘 다 밴딩필터니까 뭐 효과는 비슷하겠죠
      이 필터들이 어떤 특징이 있는지는 잘 모르겠습니다;
      그냥 직접 사용해보시고 상황에 맞게 골라서 쓰시면 될 것 같네요

  12. H265 2016.03.17 13:21  댓글주소  수정/삭제  댓글쓰기

    김코덱님 안녕하세요~ 눈팅만 하다가 오랜만에 글남겨봅니다.
    3d 블루레이 인코딩을 하고 있는데요 (half sbs)
    용량이 매우크고 iso파일 두개(파트1, 파트2)로 나뉘어져 있습니다.

    한편의 영화가 나누어져 있기 때문에 1부분과 2부분을 따로 인코딩해서 합쳤습니다.
    완벽하게 했다고 생각했는데..

    1끝나는 부분과 2 시작하는 부분에 1초정도의 검은화면이 있습니다.
    그래서 원본1의 끝부분과 2의 시작부분을 검토했는데
    원본 1의 마지막 부분에 쓸데없이 1초가 더 있네요.. 마지막 부분의 1초로 인하여 2와 매끄럽게 연결이 되지 않는듯 합니다.

    이 부분을 매끄럽게 이어가려면 인코딩을 다시해야 할까요?ㅠㅠ
    어떤 방법이 있는지 궁금합니다 예전에는 i프레임으로 인코딩을 했는데
    그때는 3g가 아닌 관계로 trim을 이용해서 프레임을 잡아서 했는데요..

    3g 디코더를 DGMVCSource를 사용하고 있고 ffdshowsource가 아니기 때문에
    이런경우 어려움이 있습니다;;

    mvtoolnix에서 뭔가 조정하는게 없을까요?;;
    원본의 재생시간과 모두 일치하게 인코딩을 했고 빠지는 부분도 없는데
    이런경우는 참 애매하네요;; 원본자체가 1과 2로 나뉘어져 있어서
    임의로 부드럽게 연결을 해줘야 할것 같은데 ㅠㅠ

    • 김코덱 2016.03.18 23:50 신고  댓글주소  수정/삭제

      안녕하세요 H265님
      mkvmerge로 원하는 지점에서 딱 맞게 자르려면 그 지점이 i프레임이어야 하는데 그게 아니라는 얘기시죠?
      그러면 인코딩을 다시 하는 수밖에 없겠네요..
      다행히 지금 해놓은 인코딩이 있으니까 잘라야할 지점이 몇번째 프레임인지는 아시잖아요?
      예를 들어서 원본1의 10001번째 프레임부터 쓸데없는 1초가 시작되는 거라면
      x264옵션에 --frames 10000 을 추가하시면 됩니다
      그러면 10000 프레임까지만 인코딩하고 끝내거든요

      지금 상황에서는 미리 인코딩해놓은 파일이 있으니까 이 방법도 가능한 거고..
      인코딩도 하기 전에 미리 잘라낼 지점을 알아내기는 어렵겠네요..
      혹시 임의적탐색이 가능한 mvc 디코더가 나온 게 있는지 한번 찾아보세요
      전 요즘에는 doom9도 그렇고 인코딩 관련 사이트는 거의 못 가보는 상황이라 최신 정보는 잘 모르겠네요 ㅎㅎ;

  13. H265 2016.03.22 21:19  댓글주소  수정/삭제  댓글쓰기

    말씀해주신대로 하고 있습니다 감사합니다 :)
    --frames 100000 이렇게 넣으면 avsp에서는 99999/100000까지만 나오길래 100001 이렇게 넣어서 하고 있습니다 ㅠㅠ
    그러면 100000/100001 이렇게 나올것 같아서..

    탐색이 가능한 디코더는 저도 모르겠습니다;;
    BD3D2MK3D 을 사용해서 비디오와 오디오를 추출하고
    avsp 스크립트가 나오게 되면 그것을 바로 복사해서 적용하고 있습니다.

    interleaved = DGMVCSource("d:\Avatar 3D Disc 1\008900\00900.track_4113.264", "d:\Avatar 3D Disc 1\00900\00900.track_4114.mvc", view = 0, frames = 171764, hw = 0)
    left = SelectEven(interleaved)
    right = SelectOdd(interleaved)
    StackHorizontal(HorizontalReduceBy2(Left), HorizontalReduceBy2(Right))
    AssumeFPS("ntsc_film")
    Return(last)

    • 김코덱 2016.03.22 22:47 신고  댓글주소  수정/삭제

      네 그렇게 하시면 될 겁니다 avsp는 프레임을 0부터 세니까 avsp에서 봤을때 10000/10001 프레임까지 인코딩하려면
      x264에서는 --frames 10001 이렇게 넣어야겠네요 ㅎㅎ;

  14. ans79 2018.07.09 02:50  댓글주소  수정/삭제  댓글쓰기

    eac3to 를 다운받아 CMD 상 에서 좌, 우 영상과 음성, 자막을 추출하는데 까지는 했는데...
    그 이후부터는, 아무리 읽어봐도 모르겠습니다.ㅠㅠ

    Dvdfab 만 사용하다가, 요즘 에러가 나는 바람에 벌써 며칠째 eac3to 를 이용한 블루레이 리핑 방법을 공부하고 있는데, 김코텍님 글 외에는 다른 정보도 구할 곳이 없는데...
    당췌 모르겠어요.ㅠㅠ

    AVS 스크립트는 avsp 라는 프로그램을 통해서 올려주신걸 그대로 복사해서 작성했는데...
    DGMVCSource 를 다운받긴 했는데, 실행파일은 보이지 않고...DGMVCSource 도....avs 스크립트도, x264 도 eac3to 폴더 안에 넣어야 하는건지도 모르겠고..^^;;
    어디에 넣고 어떻게 써야 하는건지 모르겠습니다.
    ㅠㅠ

    송구합니다만, 인코딩 생초짜인 저 같은 사람을 위해서 AVS 스크립트 작성, x264 인코딩 부분을 좀 더 자세히...구체적으로 설명해주시면 안될까요???^^;;