동영상 변환시 싱크 문제가 생기는 이유들

by BLUEnLIVE | 2010/11/18 07:46

아이폰 동영상 한방에 변환하는 툴: 완벽 버전 by BLUEnLIVE | 2010/11/15 01:21 아이폰(아이패드, 아이팟 터치)의 단점 중 하나는 동영상을...


1. 기본형: delay

비단 VCi(아이폰용 동영상 변환기) 뿐만 아니라, 동영상 변환 프로그램을 사용해보면 싱크 오류는 빈번하게 발생한다.

그런데, 대부분의 경우 동영상 변환시 싱크 오류가 발생하면 의외로 간단하게 해결할 수가 있다.
A/V muxing 도구들은 대부분 오디오 딜레이를 지정하는 기능이 있고, 딜레이 값만 적절히 지정하면 되는 것이다.

싱크 오류 발생시 원본의 딜레이를 가장 쉽게 확인할 수 있는 도구는 MediaInfo다.

MediaInfo에서 지원되는 동영상 포맷은 거의 무한하다. 단, SKM 같은 미친 포맷은 제외


이렇게 확인된 딜레이 값을 지정하기만 하면 된다.



2. 확장형: MP4Box/.mp4 문제

하지만, MP4Box로 .mp4를 만들 때는 얘기가 다르다.
일부 동영상을 완벽히 저장해주지 못하는 치명적인 문제가 있다.
(이것이 .mp4 포맷의 한계인지, MP4Box의 한계인지는 모르겠음)

아래 그림을 보자.


그림 1과 같은 원본 비디오를 MP4Box를 이용해서 mp4로 변환하면 맨 앞의 v0 영역을 날려버리는 경우가 있다.
그러면 신경써서 delay를 넣어주더라도 싱크는 깨지는 것이다.

이러한 경우는 원본 비디오와 생성된 비디오의 길이를 비교해서 이 값을 딜레이에 반영하는 것으로 해결할 수 있다.



3. 극악의 확장형: 원본 비디오가 잘린 경우

사실, 2번의 경우 자체는 거의 완벽한 해결책이 있다.
바로, 원본 비디오와 생성된 비디오의 길이 차이를 비교하는 것이다.

그런데, 여러가지 이유로 파일이 잘린 경우(700MB 중 300MB만 전송된 경우) 원본 비디오의 길이를 알 수 없다.
이 경우는 여러가지 꼼수를 사용해서 원본 비디오의 정보를 추정해야 한다.

하지만, 한 방에 해결되는 완벽한 솔루션존재하지 않는다.

게다가, 진짜 문제는 2번인지 3번인지 (또는 1번인지)를 판단하는 것 자체가 쉽지 않다는 것이다.

VCi는 나름 여러가지 방법으로 싱크를 조절하고 있다.
최대한 싱크를 맞추기 위해 노력하고 있지만, 그래도 완벽한 솔루션은 없다.

그렇기 때문에 [VCi]와 별도로 싱크를 보정한 파일인 [VCi-DC]를 생성하는 것이다.