iOS는 비디오 파일 포맷으로 mp4 포맷을 사용한다.
그리고, 이 mp4 포맷의 기능들을 꽤나 깨알같이 잘 지원한다.
예컨데, 자막의 경우 안드로이드 폰들이 거의 지원하지 않는 내부자막을 꽤 충실하게 지원한다.
(많은 안드로이드 어플들은 smi, srt 등의 외부자막만을 다양하게 지원함)
그리고, 이 mp4 포맷은 꽤 멋진 챕터 기능을 갖고 있다.
mkv 포맷과 더불어 챕터 기능을 준수하게 지원하는 포맷이다.
게다가, mkv에서 챕터 정보를 아래와 같은 ogm 포맷으로 추출하면 mp4에 그대로 입힐수도 있다.
CHAPTER01=00:00:00.000
CHAPTER01NAME=Intro
CHAPTER02=00:01:00.000
CHAPTER02NAME=Act 1
CHAPTER03=00:05:30.000
CHAPTER03NAME=Act 2
CHAPTER04=00:12:20.000
CHAPTER04NAME=Credits
그런데, 이렇게 지정한 챕터 기능은 정작 iOS 디바이스에서는 사용할 수가 없다.
iOS 디바이스는 이런 표준형 챕터를 완전히 무시하고 다른 포맷의 챕터 기능을 사용하기 때문이다.
바로, 자막에 주로 사용되는 ttxt(timed-text) 포맷이나 srt 포맷으로 활용해 챕터를 지정하는 것이다.
위의 OGM 파일은 아래와 같은 ttxt 포맷이나…
<?xml version="1.0" encoding="UTF-8" ?>
<!-- GPAC 3GPP Text Stream -->
<TextStream version="1.1">
<TextStreamHeader width="400" height="60" layer="0" translation_x="0" translation_y="0">
<TextSampleDescription horizontalJustification="center" verticalJustification="bottom" backColor="0 0 0 0" verticalText="no" fillTextRegion="no" continuousKaraoke="no" scroll="None">
<FontTable>
<FontTableEntry fontName="Serif" fontID="1"/>
</FontTable>
<TextBox top="0" left="0" bottom="60" right="400"/>
<Style styles="Normal" fontID="1" fontSize="18" color="ff ff ff ff"/>
</TextSampleDescription>
</TextStreamHeader>
<TextSample sampleTime="00:00:00.000">Intro</TextSample>
<TextSample sampleTime="00:01:00.000">Act 1</TextSample>
<TextSample sampleTime="00:05:30.000">Act 2</TextSample>
<TextSample sampleTime="00:12:20.000">Credits</TextSample>
</TextStream>
아래와 같은 srt 포맷으로 변환해줘야 iOS 디바이스에서 사용할 수 있다.
1
00:00:00,000 --> 00:01:00,000
Intro
2
00:01:00,000 --> 00:05:30,000
Act 1
3
00:05:30,000 --> 00:12:20,000
Act 2
4
00:12:20,000 --> 00:12:50,000
Credits
이렇게 변환한 뒤에 아래와 같은 옵션을 붙여주면 된다.
MP4Box.exe -ipod -add chapter.srt:chap:group=5 movie.mp4
이런 식으로 iOS 디바이스에서 챕터 기능을 적용할 수 있다.
그런데, 이렇게 만들어진 파일은 치명적인 문제가 있다.
다른 재생기에선 그냥 자막(!)으로 인식한다는 거…