인코딩을 하다보면 가끔 VFR(Variable Frame Rate)로 작업해야 할 때가 있습니다.

24p와 30p가 섞여있는 소스를 인코딩하거나 60i 소스의 구간별로 30p와 60p를 따로 적용하고 싶다면 VFR을 사용해야 하죠.

VFR 인코딩에는 Decomb나 TIVTC 같은 필터가 주로 사용되는데 자동으로 24p와 30p를 구별해서 타임코드와 스크립트를 만들어 줍니다.

하지만 극히 일부 구간에서만 프레임 레이트를 다르게 만들고 싶은 경우에는 수동으로 타임코드와 스크립트를 만드는 것이

훨씬 간단하고 빠르기도 합니다. 게다가 Decomb나 TIVTC만으로는 30p와 60p가 혼합된 VFR 인코딩은 불가능하죠.

따라서 수동으로 스크립트와 타임코드를 작성하는 방법도 함께 알아두시면 좋습니다.


먼저 수동으로 스크립트를 작성하는 방법입니다.

예를 들어 소스 영상은 총 60000 프레임(60i)이고 이 중 앞 부분 30000 프레임은 30p 촬영, 뒷 부분 30000 프레임은 24p 촬영이라고 가정하면

다음과 같이 avs 스크립트를 작성합니다.

s=MPEG2Source("source.d2v")


video=trim(s,0,29999).yadif().assumefps(27)

film=trim(s,30000,59999).tfm().tdecimate().assumefps(27)


unalignedsplice(video,film)


avisynth에서는 프레임 레이트가 다른 클립을 서로 이어붙일 수 없기 때문에 그 중간 정도인 assumefps(27)로 똑같이 맞춰주는 겁니다.

이렇게 만든 스크립트를 그대로 인코딩하면 27fps의 CFR 영상이 되겠죠.

즉 앞 부분에서는 원본보다 느리게 재생되고 뒷 부분에서는 원본보다 빠르게 재생됩니다.

따라서 구간 별로 프레임 레이트를 따로 지정해 줘야 하는데 이 때 사용되는 것이 타임코드 파일입니다.

위의 경우에는 아래와 같이 텍스트 파일을 작성하면 됩니다.

# timecode format v1

assume 29.97

# TDecimate v1.0.3 by tritical

30000,53999,23.976


assume 29.97은 영상의 전체적인 프레임 레이트를 정해주고 그 아래로 구간별 프레임 레이트를 정할 수 있습니다.

30000,53999,23.976은 30000 ~ 53999 구간을 23.976fps로 정한다는 뜻입니다.

(TIVTC가 적용됐기 때문에 뒷 부분의 프레임 수가 24000으로 줄어들고 따라서 총 프레임 수는 54000이 되겠죠. 이 부분을 주의해야합니다.)

구간 시작 프레임, 구간 종료 프레임, 프레임 레이트 이런식으로 콤마로 구분해서 작성하면 됩니다.

(여기에서는 한 구간만 입력했지만 줄을 바꿔서 얼마든지 구간을 추가할 수 있습니다.)

따로 지정되지 않은 구간은 assume 29.97에서 정해진대로 29.97fps가 적용됩니다.

0 ~ 29999 구간은 따로 정해주지 않았으니까 29.97fps가 적용되는 것이죠.


이렇게 작성된 타임코드 파일을 인코딩 영상에 적용시켜야 하는데 방법은 두 가지가 있습니다.

첫 번째 방법은 avs 스크립트를 그대로 인코딩해서 27fps의 CFR 영상을 만든 다음 먹싱 과정에서 타임코드 파일을 넣어주는 것이고,

두 번째 방법은 avs 스크립트를 인코딩하는 과정에 타임코드를 직접 입력시키는 것입니다. 그러면 VFR 영상이 바로 만들어지게 되고

먹싱 과정에서 따로 타임코드 파일을 넣어주지 않아도 됩니다.

두 번째 방법은 이 글에서 이미 언급한대로 비트 배분이 더 효율적이기 때문에 되도록이면 두 번째 방법을 사용하는 것이 좋습니다.

다만 x264로 인코딩하는 경우에만 가능하죠. (x264의 --output을 mp4, mkv, flv 등의 컨테이너로 지정해야 합니다.)




Posted by 김코덱

댓글을 달아 주세요

  1. 미녀의탄생 2014.11.07 09:24  댓글주소  수정/삭제  댓글쓰기

    주황색 글박스 안에 있는 스크립트 대로 하면
    전체적으로 27 프레임이 되니까 이렇게 하지 말고,
    메모장을 열어 파란색 글박스에 있는 것처럼
    전체 프레임의 프레임 레이트를 먼저 지정해 준다.

    24 fps로 만들 구간만 따로 23.976 으로 구간을 지정해 주면
    지정한 구간만 23.976 으로 변경 된다.
    단, 그만큼 전체 프레임 수가 줄어드니까
    그걸 주의해서 프레임 지정을 해주고,
    작성이 끝나면 timecode.txt 로 저장한다.

    메구이로 인코딩 할 때,
    x264 코덱 옵션에서 커맨드 라인에 --tcfile-in "timecode.txt"
    명령어를 추가해 주면 인코딩 시 적용이 되어 자동으로 VFR 인코딩이 된다.

    제가 제대로 이해한 게 맞나요?

    이렇게 하면 굳이 버추얼덥 같은 걸로 처음부터 끝까지 정직하게 재생 시켜서
    timecode.txt 파일 생성할 필요 없이 바로 적용이 되는 건가요?

    그런데 궁금한 것이 원래 전체 구간이 29.970 이잖아요.
    여기서 특정 구간만 23.976 으로 변경하면
    그만큼 프레임의 수가 줄어들게 되는 건데,
    그 줄어든 프레임의 수를 어떻게 계산하는지 모르겠습니다.

    본문에서 든 예시는 총 60,000 이라는 프레임 수를 가정하고 설명을 하셨는데,
    사실 실제 영상은 저렇게 딱 떨어지는 게 아니다 보니
    계산하기가 쉽지 않을 것 같이 느껴지는데,
    쉽게 계산하는 방법 없나요?

    특히 서로 다른 프레임이 여러 곳에 군데군데 나누어 들어가 있을 경우,
    이를 대체 어찌 계산해 줘야 할지 감이 전혀 안 잡힙니다. 쿨럭-

    그리고 여러 구간에 나뉘어 들어가 있을 경우,

    # timecode format v1
    assume 29.97

    # TDecimate v1.0.3 by tritical
    1000,2000,23.976
    5000,10000,23.976
    30000,60000,23.976

    이런 식으로 timecode.txt 파일에 추가해 주면 되는 건가요?

    근데 이렇게 수동으로 타임코드 파일을 생성할 때,
    프레임 수 계산 미스로 인코딩 시 오류가 나면 어떡하나요?
    AvsPmod 같은 걸로 타임코드 적용 해서 미리 확인해 볼 수 있는 방법 없나요?

    마지막으로 오디오 쪽은 비디오에 싱크 어찌 맞추나요?
    VFR 적용을 해서 프레임 수가 바뀌었으니
    그만큼 오디오 싱크가 밀릴 것 같은데...

    아무리 검색해서 찾아 봐도 카페든 지식인이든 개인 블로그든
    항상 오디오 쪽에 관한 설명은 전혀 없네요. ㅠ.ㅠ

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

      ivtc나 vfr을 잘 모르신다면 이 글만 봐서는 이해하기가 힘들 겁니다
      아무튼 수동으로 vfr을 하기 위해서 필요한 개념들만 몇개 말씀드리면,

      1. 프레임 레이트는 컨테이너에서 결정되는 속성입니다
      그래서 어찌보면 동영상 압축과는 별로 관계가 없는 속성입니다
      총 100장의 프레임이 있다고 치면 이 100장의 프레임을 1초 동안 빠르게 지나가게 만들면
      100fps 영상이 되는 거고 100초 동안 느리게 지나가게 만들면 1fps 영상이 되는 거죠
      그리고 이 fps 정보는 보통은 컨테이너에 담겨 있습니다
      따라서 별다른 작업을 하지 않고도 프레임 레이트는 자유롭게 수정할 수 있습니다
      100장의 프레임을 mkv에 담을 때 25fps로 지정을 했는데 나중에 50fps로 바꾸고 싶다면
      이 mkv에서 100장의 프레임을 그대로 꺼낸 다음 다시 mkv에 50fps로 담으면 되니까요

      2. avi 컨테이너는 vfr을 지원하지 않습니다 그리고 avs는 avi와 같다고 보시면 됩니다
      vfr은 말 그대로 프레임 레이트가 변한다는 건데
      avs(=avi)는 vfr을 지원하지 않기 때문에 프레임 레이트가 하나로 고정됩니다
      따라서 avs 스크립트에 vfr 인코딩을 적용하려고 할 때 필요한 것이 타임코드 파일입니다.
      예를 들어 총 100장의 프레임이 있을 때 처음 50장은 25fps, 다음 50장은 50fps로 인코딩하고 싶다면
      총 100장의 프레임을 50fps든 25fps든 우선 cfr로 인코딩을 해놓고 인코딩된 100장의 프레임을
      mkv 컨테이너에 담을 때(먹싱할 때) 타임코드 파일을 함께 먹싱해서 앞의 50장은 25fps로,
      뒤의 50장은 50fps로 재생되도록 만드는 겁니다

      3. ivtc나 vfr 인코딩을 하면 전체 프레임 수가 줄어드는데 이건 오디오 싱크와는 관계가 없습니다
      ivtc나 vfr 인코딩을 제대로 했다면 줄어든 프레임 수에 딱 맞게 fps가 변하기 때문이죠
      원본 자체에 싱크 문제가 있는 게 아니라면 특별히 ivtc나 vfr 때문에 싱크가 틀어지진 않습니다

      대충 이 정도만 알고 있어도 본문 내용을 이해하는데 도움이 될 겁니다
      다시 한번 읽어보시고 천천히 따라해 보세요
      18, 24, 30인 구간이 꽤 여러개 섞여있는 것 같은데 그러면 계산이 조금 복잡하긴 하겠지만
      어느정도 익숙해지면 사실 별 거 아닙니다
      그리고 예전에 스누피님이 수동 vfr에 관해서 자세하게 설명해 놓으신 글이 있으니까 그것도 한 번 읽어보세요
      http://snoopybox.co.kr/1235

    • 미녀의탄생 2014.11.07 23:21  댓글주소  수정/삭제

      긴 질문에 정성스레 답변 달아 주셔서 정말 감사합니다. 꾸벅~ (_ _)
      혹시 AviSynth에 관해서 배울 수 있는 사이트나 블로그 있다면
      가르쳐 주시면 정말 고맙겠습니다.
      머리로는 어떻게 만들면 되겠구나 이해는 했습니다.
      근데 정작 스크립트 짜는 방법을 모릅니다. ㅇㅅㅇ;

      참고 하라고 알려 주신 스크립트를 어느 정도 활용하면 당장은 해결 가능하겠지만,
      실제로 이해하고 응용하는 방법을 모르면 계속 질문만 남기게 되겠죠.
      그래서 AviSynth를 제대로 배워 보고 싶은데요.
      해외 둠구 포럼 외에는 배울 곳이 없는 건가요?
      제가 영어 젬병이라... 쿨럭;;

  2. 미녀의탄생 2014.11.08 01:12  댓글주소  수정/삭제  댓글쓰기


    ============================================================
    film=trim(0,113786).Telecide(guide=1).Decimate(quality=3).assumefps(23.976)
    ending=trim(113787,115619).Yadif(order=-1).assumefps(23.976)
    unalignedsplice(film,ending)
    ============================================================

    어차피 최종 프레임 레이트가 비디오와 오디오를 먹싱할 때
    타임 코드에 의해서 결정 되는 거라면
    굳이 저렇게 구간을 나누어 IVTC 작업을 거치도록 할 필요 없이
    그냥 녹화된 그대로 인코딩 끝낸 후에
    비디오와 오디오 합칠 때 타임 코드 넣어서 먹싱하면 되는 거 아닌가요?
    왜 굳이 위와 같은 스크립트를 통해 구간을 나누어
    필름 쪽은 IVTC 작업을 거쳐야 하는지 이해가 되질 않습니다. ㅇㅅㅇ;

    그리고 위에서도 질문 드렸 듯이 AvsPmod에서 확인할 때
    스크립트에 타임 코드 불러 오도록 해서
    VFR 적용된 상태로 프레임 레이트를 확인해 가면서
    작업할 수 있는 방법은 없나요? ㅇㅅㅇ;

    그리고 trim(100,0) 이렇게 넣으면 100 프레임부터
    맨 마지막 프레임까지 지정하는 거라는데,
    왜 굳이 마지막 프레임 수치를 정확하게 입력하는 건지...
    이 또한 이유가 있어서인지 궁금합니다.

    너무 많은 질문을 한꺼번에 남겨서 피곤하게 만드는 거 아닌지
    왠지 죄송스러워지네요. ^^;
    기왕 배우는 거 제대로 이해해서 스스로 응용할 수 있는
    단계로 넘어가고 싶은 욕심에 그만... ^^;

    예전에는 비드코리아라는 사이트가 있어서
    거기서 서로 정보 공유 했다고 하던데,
    지금은 그런 곳이 없어서 뒤늦게 인코딩 세계에 발을 들인
    저 같은 새싹은 배울려고 해도 정보가 너무 부족하네요. ㅠ.ㅠ

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

      1. 간단한 예를 들어서 설명을 해보면요,
      우선 녹화된 tp 파일이 총 60장의 프레임이고 재생시간은 2초라고 해보죠
      그러면 초당 30프레임이 지나가는 거니까 30fps 영상이겠죠
      그런데 처음 1초는 원래 24fps로 촬영한 장면이지만 4장마다 하나의 중복 프레임을 넣어서
      억지로 30fps를 만든 다음 송출한 영상이고(이런 작업을 텔레시네라고 합니다)
      다음 1초는 원래 30fps로 촬영한 부분이라서 30fps 그대로 송출한 부분이라고 하겠습니다
      이런 영상을 인코딩하는 방법은 크게 보면 세 가지가 있습니다

      a. 모든 구간을 30fps로 인코딩(일반적인 디인터레이스) - 처음 1초의 중복 프레임이 그대로 남습니다 : 총 프레임 수 = 30 + 30 = 60
      b. 모든 구간을 24fps로 인코딩(역텔레시네=IVTC) - 마지막 1초의 움직임이 끊겨보입니다 : 총 프레임 수 = 24 + 24 = 48
      c. 24~30fps VFR 인코딩(IVTC+디인터레이스) - 모든 구간이 자연스럽게 보입니다 : 총 프레임 수 = 24 + 30 = 54

      필름 쪽만 ivtc를 하는 이유는 보시는 것처럼 모든 구간에서 자연스러운 원본을 보기 위해서죠

      2. avspmod(=avs)는 앞서 말씀드린대로 avi와 같아서 VFR을 지원하지 않습니다
      그러니까 스크립트에 타임코드를 불러와서 VFR처럼 작동하는 것은 불가능합니다
      애초에 스크립트에 타임코드를 불러오는 게 불가능한 거죠

      3. trim에서 마지막 프레임 수치를 입력하는 이유는 딱히 없습니다 그냥 하는 거죠
      말씀하신대로 프레임 100부터 클립 끝까지 지정하려면 그렇게 하셔도 됩니다

      확실히 요즘은 인코딩 관련 사이트도 없고 인코딩에 관심이 있는 사람도 많이 줄어든 것 같습니다
      저만 해도 요즘은 바빠서 인코딩과 관련해서는 블로그 한번씩 와보는 정도로 많이 줄었네요;
      아무튼 영어만 어느정도 해결되면 doom9만 한 사이트가 없습니다 가장 정확하기도 하고요
      다시 비드코리아 같은 사이트가 생길지는 모르겠지만..목 마른 사람이 우물 파야죠 ㅎㅎ;

  3. 미녀의탄생 2014.11.10 05:48  댓글주소  수정/삭제  댓글쓰기

    ==================================================================================================
    LoadPlugin("E:\Encoding\Tools\MeGUI_x86\tools\dgindex\DGDecode.dll") #DGIndex
    Load_Stdcall_Plugin("E:\Encoding\Tools\MeGUI_x86\tools\yadif\yadif.dll") # 디인터레이싱
    LoadPlugin("E:\Encoding\Tools\MeGUI_x86\tools\avisynth_plugin\TIVTC.dll") # 역 텔레시네

    s=DGDecode_mpeg2source("E:\Encoding\Works\미녀의 탄생.d2v")

    film1=trim(s,124,47373)
    video=trim(s,47374,48796)
    film2=trim(s,48797,114777)

    film1cropped=film1.crop(944,524,-944,-524)
    film1vfr=tdecimate(film1cropped,clip2=yadif(film1,order=1)).assumefps(23.976)

    videovfr=yadif(video,order=1).assumefps(23.976)

    film2cropped=film2.crop(944,524,-944,-524)
    film2vfr=tdecimate(film2cropped,clip2=yadif(film2,order=1)).assumefps(23.976)

    unalignedsplice(film1vfr,videovfr,film2vfr)

    sorathread()
    crop(6, 6, -6, -6)
    Spline36Resize(1280,720)
    ==================================================================================================

    이틀 동안 혼자 댓글에 달린 스크립트 내용을 참고해서
    안 돌아가는 대굴빡 쥐어 뜯어가며 짜봤는데요.
    제대로 짠 게 맞는지 한 번 봐주시면 고맙겠습니다. (_ _)

    잘못된 부분이 있거나 다듬을 부분이 있다면
    수정 좀 해주시면 정말 고맙겠습니다. (_ _)

    아~ 그리고 종스비님 블로그 보니 사람은 눈으로 그림을 보고 판별하지만,
    컴퓨터는 프레임으로 판별 한다고 저렇게 32x32 사이즈로 만들어도
    판별하는데 아무 이상이 없다고 하더군요.

    밑에 흐르는 자막 말고도 엔딩 올라가는 자막도 포함이 되어 있어서
    크롭을 32x32 사이즈로 만들어서 스크립트 짰습니다. ㅇㅅㅇ;

    그리고 TFM()이 디인터레이스를 담당하고
    TDecimate()가 역 텔레시네를 담당한다고 어디서 봐서
    디인터레이스에 꼭 TFM()이 들어가야 하나 싶어서
    TFM() 빼고 바로 yadif()로 넣어 봤습니다.

    일단 인코딩은 성공 했고, 오디오랑 싱크도 잘 맞습니다.
    근데 mediainfo로 파일 정보를 들여다 보니
    정보가 VFR로 안 나오고 CRF로 나오네요.

    타임코드에 적용한 구간 정상적으로 30fps로 변하고,
    오디오 싱크도 맞는데,
    파일 정보에는 CRF인 걸로 나오는데 정상인가요?

    타임코드는 x264 커스텀 커맨드 라인에 직접 입력해서 인코딩 했습니다.
    타임코드는 직접 수동으로 메모장 열어서 작성 했구요.

    ============================
    # timecode format v1
    assume 23.976
    #
    37800,39222,29.97
    ============================

    처음 작업해 본 거라 이게 정상인지 아닌지 모르겠네요. ㅇㅅㅇ;

    • 김코덱 2014.11.10 21:44 신고  댓글주소  수정/삭제

      제대로 잘 하신 것 같습니다
      그런데 30fps인 구간이 하나뿐인가 보네요? 매회 이런 정도면 시간도 별로 안 걸리고 금방 짜겠네요 ㅎㅎ;

      ivtc할 때 프레임 전체를 가지고 해도 되고 말씀하신대로 32x32정도만 가지고 해도 되긴 하지만..
      사실은 좀 오래된 얘기죠 해상도가 720x480 정도인 DVD라면 좀 덜 하겠지만 요즘은 보통 1920x1080 이니까
      32x32만 가지고 판별하기엔 좀 불안하지 않을까 싶습니다
      시간이 충분하다면 물론 전체를 가지고 하는 게 가장 정확하고요 꼭 줄여야 한다면 저 같은 경우는
      화면 가운데에서 400x400 정도가 적당하지 않을까 싶네요(뭐 특별한 기준이 있는 건 아닙니다)
      ivtc에 사용하는 화면이 클수록 계산이 오래걸리니까 시간이 더 걸리기는 하지만 그만큼 오판할 확률이 적겠죠
      말씀드린대로 특별히 정해진 기준 같은 건 없으니까 속도를 체크해 보시고 적당한 크기를 쓰시면 될 것 같습니다

      지금처럼 원본이 24fps인 경우에는 yadif보다 tfm이 더 좋을 겁니다
      http://ligel.tistory.com/12
      이 글에서 말씀드린대로 원본이 프로그레시브 24fps니까 아무런 처리를 하지 않는 tfm이 더 낫겠죠
      yadif는 애초에 ivtc용으로 만들어진 것도 아니니까요..뭐 큰 차이는 아니니까 그냥 편한대로 하셔도 되긴 합니다
      중간에 있는 30fps 구간도 60i 가 아니라 30p 촬영이라면 tfm이 더 나을 것 같네요

      mediainfo가 항상 정확한 건 아니라서요
      동영상에 있는 헤더 정보만 가지고 판별하는 거라서 가끔 틀린 정보가 나올 때도 있죠
      지금처럼 구간 별로 24fps, 30fps 재생이 제대로 된다면 별 문제는 없을 겁니다

  4. DVD마니아 2015.03.12 19:16  댓글주소  수정/삭제  댓글쓰기

    BillyTC - Billy's vfr maker
    https://www.nmm-hd.org/newbbs/viewtopic.php?f=7&t=1071

    Auto_VFR_Fast
    http://putin999.blog.fc2.com/blog-category-3.html



    참고하실 분은 참고하셔도 될 듯

  5. H265 2015.09.27 17:56  댓글주소  수정/삭제  댓글쓰기

    김코덱님 또 제가 왔습니다 ㅠㅠ 죄송합니다 귀찮게 해드려서;;
    추석명절 잘 보내시고 건강한 가을 시작하시길 진심으로 기원합니다.

    이번에도 이것저것 해보고 찾아보고 했는데도 답이 안나와서.. 김코덱님께 최종적으로 왔습니다;;

    http://i.imgur.com/kY2JQn6.png

    스포츠 다큐멘터리 블루레이 원본입니다.
    eac3to에서 비디오와 챕터 오디오 자막등을 추출하려고 위 그림과 같이 봤는데
    재생시간이 2:18:20 으로 되어있습니다. 팟플레이어나 TM6으로 봐도 재생시간이 일치합니다.

    그러나..

    두번째처럼 막상 추출하려고 하거나 추출을 하게되면
    2:24:19로 재생시간이 늘어나 있습니다..

    eac3to d:\hi 에서는 정확하게 시간이 표시되어 나오는데

    eac3to d:\hi 1) 이렇게 하게되면 시간이 바뀌어 나옵니다..

    정확한 플레이타임은 2:18:20 입니다..
    하지만 추출하게 되면 2:24:19 이렇게 나옵니다..

    제 생각인데 00035.m2ts가 메인인데
    약간의 부가영상(extra)이 섞이지 않았을까 하는 생각이 들어서요..

    정확하게 원래의 플레이 시간을 맞게 추출해서 인코딩하고 싶은데
    이런 경우는 처음이라서 당황스럽습니다 ㅠㅠ

    mkv로 추출(2:24:19)해서 avsp에서 열어보니
    맨 처음 시작부분에서의 차이가 보입니다.

    tm6이나 팟플에서 폴더재생 했을때는 바로 오프닝이 시작되지만(2:18:20 )
    추출한 mkv를 avsp에서 보면 앞부분에 화면조정 장면이라던가 검은색의 독백의 시간이 몇분정도 더 있습니다.. (2:24:19)

    원본의 프레임은 23.976아고 별다른 특이사항은 없습니다.. 그런데 혹시 vfr일수도 있을까 해서 이곳에 글을 적게 되었습니다.

    팟플로 재생했을시에 전체 프레임은 199008 입니다.
    avsp에서 봤을때에는 207603 입니다.

    이런경우 어떻게 해야 하는지 아예 손도 대지 못하고 있습니다..
    며칠째 추출만 이것저것 계속 해봤는데 도저히 제힘으로는 답이 안나오는군요 ㅠㅠ

    • 김코덱 2015.09.28 17:18 신고  댓글주소  수정/삭제

      00035.m2ts파일을 직접 재생해보면 재생시간이 얼마로 나오나요?
      2:18:20으로 나오면 00035.m2ts를 바로 인코딩하시면 되고요
      (eac3to d:\xxxxx\hi\BDMV\STREAM\00035.m2ts 이런식으로 하시면 됩니다)
      2:24:19로 나오면 tsmuxerGUI 같은 툴로 앞부분(5분59초)만 잘라내고 추출해서 인코딩하시면 됩니다
      블루레이 재생방식을 생각해보면 아무래도 00035.m2ts의 재생시간이 2:18:20일 것 같네요 확인해보세요

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

    2:24입니다.. 잘라내기도 해봤는데요
    앞부분을 잘라내면 시간이 딱 떨어져야 하는데
    그 남는시간만큼만 잘라내면 앞부분이 잘리더군요..

    정확하게 영상을 비교해가며 앞부분 시작부분의 오프닝 영상을 딱 맞추어서 자르면 약 2분 정도의 시간이 남습니다.. ㅠㅠ

  7. H265 2015.09.28 23:43  댓글주소  수정/삭제  댓글쓰기

    다른영상이 들어간건 아니고 화면조정하는 컬러가 들어가고 독백(검은화면)의 시간이 길게 앞뒤로 있네요..
    앞뒤부분을 잘라봤는데 2:18의 전체 프레임과 일치하게 정확하게는 못자르고 시간으로만 자를수 있나봅니다;;
    프레임과 일치시키고 싶은데;;
    그런데 시간도 분단위로 02:18까지는 잘랐는데 초를 못자르겠네요 ㅠㅠ

    • 김코덱 2015.09.29 21:53 신고  댓글주소  수정/삭제

      어차피 인코딩하시려는 거면 비디오만 avsp에서 프레임 단위로 편집해서 인코딩하시고
      오디오는 mkvmerg나 txmuxer 등으로 잘라내기 해서 먹싱하면 될 것 같네요
      편집된 비디오에 해당하는 부분만 잘라낸 다음 혹시 싱크가 약간 틀어진 부분이 있으면 먹싱할 때 딜레이 조절하면 되니까요

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

    역시나 많은 도움을 받았습니다.
    댓글 감사드립니다 꾸벅꾸벅
    이참에 궁금한거 전부 물어봐도 될런지요~~~

    블루레이 인코딩에서
    ip_ratio=1.30 / pb_ratio=1.20

    대체로 이런식으로 인코딩을 하던데

    저 값은 1.4/1.3이 기본값으로 알고 있습니다..

    인코딩시에 1.4/1.3 이거나 1.2/1.1 등등 값이 정해지던데
    이런값은 어떤 이유로 값을 정하는건지 궁금합니다~~

    1.3/1.2 보다 1.2/1.1 일때 비트레이트가 더 높게 나타나는것 같은데
    단순히 비트를 높게 주려면 crf를 더 낮추거나 qcomp를 높게주면 될텐데 저값은 어떤건지.. 궁금합니다.~~

    • 김코덱 2015.10.04 18:53 신고  댓글주소  수정/삭제

      ip, pbratio는 p프레임을 기준으로 i프레임과 b프레임의 비트레이트를 조절하는 옵션입니다
      그러니까 값을 낮추면 p프레임과 i, b프레임의 비트레이트 차이가 좁혀지겠죠

      말씀하신대로 비트를 높게 주려면 crf를 낮추면 되는 거고 위 옵션은 건드릴 필요가 없습니다
      정말 특별한 경우에, 저 옵션들이 어떤식으로 작동하는지 정확히 알고 있는 게 아니라면요..
      블루레이 인코딩이라고 해서 1.3 / 1.2를 적용할 필요는 없을 것 같습니다

  9. 나인 2018.03.25 09:08  댓글주소  수정/삭제  댓글쓰기

    김코덱님, 아직도 답글을 달아주시는지 잘 모르겠습니다만..
    제가 한달가까이 끙끙앓으며 안되는 영어로까지 검색했는데 아직 해결하지 못했습니다 ㅠ
    혹시 도움 좀 주실 수 있을까요?

    원본파일은 4개의 파일을 누군가 합쳐놓은 파일입니다.
    거기서 특정부분은 다른부분으로 대체하고 싶어서.. Avs파일을 생성하였습니다.

    문제가 원본파일과.. 대체할 영상의 파일들이 모두 25fps입니다만
    원본파일에서 4개의 파일을 붙여놓는 그 사이부분의 1프레임 속도가.. 다릅니다.
    826120
    826160
    826261 <- 이런식으로요
    826301

    근데 AudioDub으로 합치면 싱크에 영향이 없다고 검색으로도 그랬고.. 이 글에도 써져잇는거 같습니다.
    저는 이때까지 avs파일에 타임코드를 적용할수 없나 뒤졌었는데 이글에 답을 얻을 수 있었습니다.
    Avs는 VFR을 지원하지 않는다는걸......이제야 알게되었네요 ㅠㅠ

    다만, Avs로 하면 모든 프레임을 25fps로 변경하게되고.. 자연스레 뒷부분의 영상이 기존 시간대랑 달라지니까 싱크가 어긋하게 되는거 아닌가요?ㅠ
    제가 잘못 이해한것인지요..?