2010년 2월 21일 일요일

RE : 동영상과 오디오의 싱크를 맞출 때, 파일을 잘라내지 않고 싱크만 맞춘다면?

이 글은 동해랑님의 질문에 대한 답변 트랙백입니다.

 

질문 : 동영상과 오디오의 싱크를 맞출 때, 파일을 잘라내지 않고 싱크만 맞춘다면?

 

먼저 오디오의 원본 상태를 유지한다는 말에 대해 2가지 해석이 가능합니다. 말 그대로 원본 해시값 그대로 동일한 파일을 보존하고 싶다는 것인지, 아니면 재인코딩 과정을 거치지 않고 원본의 음질을 그대로 유지하고 싶다는 것인지 입니다.

 

저는 후자의 뜻으로 해석했습니다.

 

예를 들어 MeGUI에 들어있는 Aften이나 FFmpeg로 딜레이만 컷팅 한다면 이는 재인코딩 과정을 거치게 되므로 동일한 비트레이트를 유지하더라도 음질의 손실을 입게 됩니다. 하지만 DelayCut 프로그램은 그렇지 않습니다. 이 프로그램은 재인코딩 과정 없이 바이너리 컷팅으로 파일을 다룹니다. 따라서 아무런 음질의 손실 없이 원본의 음질 그대로 유지가 됩니다.

 

샘플로 HDTV 녹화해서 ac3 파일 1분 분량을 추출했습니다. 그리고 DelayCut 프로그램으로 앞부분 30초를 잘라냈습니다. 즉 원본은 1분짜리이고 수정본은 30초짜리입니다.

 

그리고 Compare It 이라는 프로그램으로 비교를 해봤습니다.

 

 

 

위 스샷의 좌측 막대를 보면 절반은 녹색이고 절반은 흰색입니다. 즉 앞부분 절반은 전혀 다르다는 말이고 뒷부분 절반은 완전 동일하다는 말입니다. 우측 수정본은 앞부분이 공백인데 실제로 파일 앞부분이 공백이라는 뜻이 아니라 Compare It에서 동일한 패턴이 나올 때 까지는 공백으로 보여주는 것입니다. 30초를 잘라냈으니 당연히 앞부분 30초동안은 원본과 동일한 패턴이 나올 수 없겠지요.

 

그리고 30초 뒤로 가보면 이제 드디어 동일한 패턴이 시작됩니다.

 

 

 

 

이렇게 동일한 내용이 계속 진행되고 파일 끝부분에서 다시 조금 달라집니다.

 

 

 

 

제가 ac3 파일의 구조같은건 모르기 때문에 설명은 못 드리겠지만 아무래도 파일 시작 부분과 끝 부분에는 그 파일에 대한 전체 정보같은게(러닝타임, 코덱, 채널, 비트레이트 등등...) 들어있겠지요.

 

따라서 DelayCut 프로그램은 재인코딩 과정 없는 바이너리 컷팅 방식이기 때문에 원본과 동일한 음질을 유지한다는 결론을 내릴 수 있습니다.

 

 

 

 

 

이제 파일을 자르지 않고 딜레이 값을 넣었을 때를 생각해보겠습니다. 예를 들어 mkvmerge 로 먹싱할 때 딜레이값을 -30초 넣어주는 것과 DelayCut 프로그램으로 앞부분 30초를 잘라낸 경우가 어떻게 다른가에 대한 답변입니다. 결론부터 말씀드리자면 같습니다. 사실 avi에 대해서 질문하신 것이라면 실험을 해보지 않아서 잘 모르겠습니다만 적어도 mkv에선 같습니다. 즉 mkvmerge로 영상과 음성을 먹싱할 때 음수의 딜레이값을 넣어주면 오디오 파일은 앞부분이 컷팅되면서 먹싱됩니다. 즉 원본 그대로 들어가는데 딜레이 값에 대한 정보가 남아있어서 알아서 당겨서 재생되는 것이 아닙니다. 먹싱하면서 딜레이만큼 앞부분을 컷팅하면서 먹싱됩니다.

 

반대로 양수의 딜레이 값을 넣었을 경우에는 상황이 다릅니다. 이 경우에는 원본 오디오가 그대로 유지됩니다. 그대로 유지되면서 단지 오디오 재생만 늦게 시작될 뿐입니다. 뒤쪽에 남은 시간만큼의 분량이 컷팅되지도 않습니다. 그대로 유지됩니다. 다만 KMP + 할리 스플리터 조합에서 재생해보니 비디오 파일이 끝나는 부분에서 재생이 그냥 끝나더군요. 오디오는 뒤에 더 남아있지만 더이상 재생되지 않았습니다. 물론 여기서 오디오를 다시 추출해보니 뒤쪽이 잘리지 않고 원본 오디오 그대로 추출되었습니다.

 

원래의 글 HDTV 영화 인코딩에 DVD 음성 넣기 에서 DelayCut 프로그램을 사용하는 이유는 명확합니다. 앞부분이야 먹싱하면서 음수의 딜레이값을 넣어서 컷팅하면 되겠지만 뒷부분에 남는 오디오는 말 그대로 용량 낭비가 됩니다. 게다가 타겟 용량을 정확히 맞추기 위해 2패스 인코딩을 하는 경우 인코딩을 시작하기 전에 정확한 오디오 용량을 뽑아내야 비트레이트 계산을 할 수 있습니다.

 

 

 

이것으로 동해랑님의 질문에는 답변이 되었을 것 같습니다.

비로그인 댓글 제한에 대해서는 공지사항에 적어두었습니다.

댓글 14개:

  1. 이번에 G2도 지르고 글 몇개 더 올린건 그냥 일탈이라 생각해주세요. 다가오는 26일엔 졸업식이 있고 28일엔 토익시험도 봅니다. 블로깅은 3월부터 하겠습니다.

    답글삭제
  2. 또 시동복구도 안 먹힙니다(문제가 없읍니다) 어떻게 해야 할까요?

    답글삭제
  3. 좋은 글이내요^^~

    -

    텍스트큐브가 접속이 안되서 도움말 게시판에 보니까 DDos공격 받아서 트래픽을 차단했다길래 기달리다가 다시 접속해보니까 접근이 되내요;;

    근대 왜 오페라에서는 아직도 접속이 안되지??

    답글삭제
  4. 스누피님의 친절한 답변에 감사를 드립니다...

    궁금증이 시원하게 해결됐네요... ^^



    공지사항 읽었습니다. 인기가 많은 것이 꼭 좋은 것만은 아니지요... ㅎㅎ

    로그인을 해서 글을 남기는 것을 안 좋아하지만.. 감사의 말씀까지도 트랙백으로 건네기는 좀 그런 것같아서 인사를 남깁니다...



    RSS 구독 잘 하고 있으니 앞으로도 유용한 글 많이 올려주세요...~* ^^

    언제나 건강하시구요...~* ^^

    답글삭제
  5. 비밀 댓글 입니다.

    답글삭제
  6. @snoopy - 2010/02/21 10:25
    졸업식 미리 축하드립니다^^

    답글삭제
  7. @Anonymous - 2010/02/22 19:30
    이런 글은 비밀글로 해 주셔야지요

    인증에 관련된 댓글인데...

    답글삭제
  8. 졸업축하드립니다.



    아울러 시험도 잘보시길 바래요^^

    답글삭제
  9. 비밀 댓글 입니다.

    답글삭제
  10. @snoopy - 2010/02/21 10:25
    정말 오랜만에 글을 남기는데, 스눞님 졸업을 미리 축하드릴께요.



    빨리 스누피님의 책을 만나보고 싶고, 다시 블로그에서 만나길 기다릴께요..^^

    답글삭제
  11. @snoopy - 2010/02/21 10:25
    졸업식 추카드립니다~^6^

    답글삭제
  12. 내일이면 토익시험을 보시겠군요 ㅎㅎ 시험 잘 보시구요 ㅎㅎ 졸업도 축하드립니다.

    답글삭제
  13. @려경아빠 - 2010/02/22 12:31
    잘 보시길 바라요.

    답글삭제