레이블이 비디오인 게시물을 표시합니다. 모든 게시물 표시
레이블이 비디오인 게시물을 표시합니다. 모든 게시물 표시

2010년 12월 9일 목요일

아이튠즈로 아이폰에 올릴 수 있는 비디오 검토 결과

iPhone4에서 재생가능한 비디오 포맷… (정말?)


애플 홈페이지에서 공식적으로 얘기하는 재생가능한 최대 비디오 포맷은 아래와 같다.

- H.264: 720p, 30fps, Main Profile level 3.1, 오디오는 AAC-LC, 160Kbps, 48kHz, 스테레오, .mp4
- MPEG-4: 2.5Mbps, 640x480, 30fps, Simple Profile, 오디오는 AAC-LC, 160Kbps, 48kHz, 스테레오, .mp4
- MJPEG: 35Mbps, 1280x720, 30fps, 오디오는 ulaw, PCM, 스테레오, .avi

그런데, 실제로 동영상을 올려보면 조건을 만족하지 않더라도 올라가고, 만족하는 것 같은데 안 올라가는 경우도 있다.
MJPEG는 좀 특이한 경우라 옆으로 빼놓고, .mp4 파일에 저장하는  H.264/MPEG-4에 대해 여러모로 확인해봤다.

오디오는 AAC-LC, 160Kbps, 48kHz, 스테레오 규칙을 지켜야 한다.
그런데, 올라가는 비디오는 좀 다르다.

- H.264: 720p, 30fps, High Profile level 3.1
- MPEG-4: 2.5Mbps, 480p, 30fps, Advanced Simple Profile

H.264의 경우 Main Profile 뿐만 아니라 High Profile까지 올라간다.
재미있는 건 진짜 프로파일이 High Profile일 필요는 없다는 것.
즉, 프로파일이 그 이상이더라도 .mp4 파일을 만들 때 옵션을 High@3.1로 지정만 해주면 업로드 및 재생이 가능하다.
게다가, fps는 확인을 하지 않는다. 무려 60fps까지도 이상 없이 올라간다.

MPEG-4는 일단 SP 뿐만 아니라 ASP까지 재생 가능[footnote]좀 웃긴 것이 대표적인 .mp4 제작도구인 mp4box에서는 SP 비디오를 ASP로 강제로 지정해버린다는 것이다[/footnote]하다.
그리고, 가로 해상도는 확인하지 않는다. 세로 해상도만 480 이하인지 확인한다.
마지막으로, (그리고 의외로) Bit Rate가 중요하다. 비디오의 BR이 2.5Mbps 이하인 경우만 올릴 수 있다.
이건 스펙에 명시되어 있는 그대로인데, 잘 신경을 쓰지 않는 경우가 많은 것 같다.

웃긴 건 이 이상 규격의 비디오를 수단과 방법을 가리지 않고 올리면 대부분 재생이 가능하다는 것이다.
OPlayer로 올려서 퀵타임으로 재생시키거나 CopyTransManager 등으로 올리기만 하면 무난한 재생이 가능하다.

2010년 11월 20일 토요일

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

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]를 생성하는 것이다.

2009년 2월 18일 수요일

비디오 인코딩 비트레이트 계산기

사용자 삽입 이미지


H.264 비디오 인코딩시 적절한 비트레이트?에서도 언급한 얘기지만, 적절한 인코딩 비트레이트를 찾는 건 쉽지 않습니다.
워낙에 화질이란 기준이 정량적으로 딱 표현되긴 어려운 것이라서 말이죠.

하지만, 원본 대비 압축률이나 비트레이트, 또는 원하는 파일 크기로 자신만의 기준을 만들 수는 있습니다.
이런 기준을 좀 편하게 잡아보기 위해 간단한 계산기를 만들어봤습니다.

앞글에도 적었듯이, 제 기준은 일단 1/150입니다.
이 기준을 비트레이트로 계산하려면, 폭 x 높이 x fps / 6400 을 계산하면 됩니다.

이 간단한 계산도 더 간단하게 할 겸, 동영상의 압축률도 쉽게 계산할 겸해서 하나 만들었습니다.


1. 이 계산기는 어느 칸이건 숫자를 입력하면 알아서 재계산을 해줍니다.

2. 초기값은 [다크 나이트] 립버전 크기 + 1/150 입니다