2010년 11월 28일 일요일

iOS 4.2에서의 자막 문제 해결 삽질기

by BLUEnLIVE | 2010/11/20 04:07

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


토요일을 꼬박 투자해서 VCi를 수정했다.
인터페이스에 Status Bar를 사용하는 등 디자인에 대한 수정이 좀 있었다.
하지만, 무엇보다 iOS 4.2에서 비정상적으로 나오는 일부 자막 문제를 해결하는 것이 가장 큰 일이었다.

두둥! Status Bar를 활용한 인터페이스의 위용.


이전 버전 VCi에서 변환한 동영상의 자막에 <font> 태그가 사용되면 iOS 4.2에서는 아래와 같이 표시된다.

font 글꼴 돋네… 아니… 돋움이네…


이 문제는 사실 아이폰 쪽의 문제가 전혀 아니다. (그래서 더 골치가 아프다)

MP4Box는 srt 자막을 동영상에 추가시킬 때 TTXT[footnote]Apple SimpleText file이라고도 하는, 애플 컴퓨터에서 만든 XML 기반의 자막 포맷[/footnote]라는 포맷으로 변환한다.
그런데, MP4Box의 변환 기능이 완벽하지 않아서 <font> 태그를 전혀 처리하지 못한다.

이전 버전인 iOS 4.1에서는 <font> 태그를 (억지로) 인식했는데, 이것은 TTXT 포맷의 개념과 상충하는 면이 있다.
TTXT 포맷 내에 글자 스타일을 지정하는 필드가 있는데, 이를 놔두고 다시 글자 스타일을 지정하면 안되는 것이다.

이런 원론적인 문제를 해결하기 위해 TTXT 파일을 읽어들여 <font> 태그를 찾아 글자 스타일에 적용하도록 했다.
물론, <font> 태그 자체는 삭제한다.

이런 방법을 통해, 꼼수가 아닌 정공법으로 iOS 4.2의 자막 기능을 잘 적용할 수 있도록 수정했다.

마지막 줄도 빨강으로 나와야 되는데, 흰색인 건 아이폰 쪽의 버그임


덧1. <font>에서 실제로 처리하는 속성은 color 하나 뿐임. 다른 속성(글자 크기 등)은 아이폰에서 전혀 인식하지 않음

덧2. color 속성은 #000000 포맷은 물론, HTML 4.01 및 X11 color 값을 모두 처리함. 즉, <font color=SteelBlue>도 인식

덧3. TTXT 필드 중에 글꼴의 크기를 지정하는 부분이 있음. 기본값이 18인데, 기본값을 32로 올려봤지만, 크기는 똑같음.
     즉, 아이패드를 위해 뭔가를 더 할 수 있는 방법이 없는 것 같음.

덧4. 이미 만들어진 mp4 파일은 새 버전의 VCi로 다시 인코딩하면 자막을 수정해줌. 물론, 오디오 재인코딩은 불필요

덧5. iOS 4.1에선 해보진 않았지만, 잘 될 것이라 판단됨. 혹시 iOS 4.1 쓰시는 분중에 테스트해주실 분 안계신가요?

덧6. iOS 4.2에서 자막을 정상적으로 출력할 수 있도록 변환해주는 도구는 VCi가 유일한 것 같음!

댓글 9개:

  1. 우앗!

    업데이트 됐을까나 싶어서 들렀더니

    해결책을 찾으셨군요 +_+

    전 그냥 iOS 4.2 버그라고 알았는데 웃...

    이런 문제였군요..!!

    잘쓰겠습니다!

    답글삭제
  2. @루즈키 - 2010/11/28 14:33
    많은 도움이 되었습니다.

    고맙습니다.

    답글삭제
  3. 4.1에서 아바타 ECE 7.9GB짜리+이모션 자막 해봤는데 색상 적용이 안되는 부분이 있습니다.



    [quote]<SYNC Start=2610640><P Class=KRCC>

    <font color="fff76a"><font face="Papyrus">oeru txoa livu</font><br>

    용서해다오

    <SYNC Start=2612500><P Class=KRCC>&nbsp;[/quote]



    위와 같은 두 줄짜리(윗줄은 나비어 노랑색, 아랫줄은 기본색) 자막에서 둘 다 기본 색으로 나오더군요.

    답글삭제
  4. @okto - 2010/11/28 22:30
    수정 완료!

    답글삭제
  5. @okto - 2010/11/28 22:30
    color="#fff76a" 가 맞는데, #를 누락한 거임.

    아놔~ 그 따위로 되어있는 것도 똘똘하게 해줘야 되는 거… 라고 투덜거리면서 작업 준비중.



    쬠만 기둘리라능.

    답글삭제
  6. 갑자기 궁금해서 뻘질문.

    아이콘에 있는 언냐는 누구인가요?

    문신만 갖고 알아맞혀 보려고 했으나 거기까진 내공이 부족하네요. ㅋㅋ

    답글삭제
  7. @qp - 2010/11/29 13:22
    저도 모릅니다. 문신만 갖고 선택한 아이콘입니다. ㅎㅎ

    답글삭제
  8. @BLUEnLIVE - 2010/11/29 00:34
    헐!! 잘못된거까정 다 처리해주면 예전 KMP꼴 난다능~~ㅋ 암튼 감사합니다^^;

    답글삭제
  9. trackback from: 아이폰으로 오카리나를, Ocarina
    현재 아이폰 앱스토어 무료 앱 Top 25의 1위에 랭크된 오카리나 부는 앱, Ocarina입니다. 오카리나 운지법에 맞게 손가락을 스크린에 대고 마이크에 바람을 불면 정말 오카리나와 똑같은 소리가 납니다. 실제로 오카리나를 부는 느낌이랄까요? 보통 오카리나는 8개에서 10개 정도의 지공이 있는제 이 어플은 4개의 지공으로 한 옥타브의 온음을 만들어 내는 것 같습니다. 실시간으로 전 세계인의 오카리나 부는 소리도 들을 수 있어서 참 흥미로운 앱입니다..

    답글삭제