레이블이 아이폰인 게시물을 표시합니다. 모든 게시물 표시
레이블이 아이폰인 게시물을 표시합니다. 모든 게시물 표시

2010년 12월 13일 월요일

아이폰용 동영상 변환기 v2.x 대대적 업데이트

by BLUEnLIVE | 2010/12/02 00:24

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


아이폰용 동영상 변환기(이하 VCi로 칭함)에 대해 정말 많은 분들께서 피드백을 보내주셨다.
개인적으로 혼자 쓰려고 만든 프로그램에 너무나 많은 분들께서 관심을 보여주신 게 당황스러우면서 고마웠다.

그동안 받은 요청을 포함하며 상당히 많은 부분에 대해 대대적인 업데이트를 단행했다.

아무리 업데이트 되어도, 인터페이스는 언제나 불변!


지난 포스팅에 댓글을 통해 요청받고, 수정/공지한 내용 및 자체적으로 수정한 내용들을 전부 정리했다.



VCi의 기능 및 특징은 아래와 같다.

1. 변환을 원하는 파일을 비디오 파일 목록에 떨어뜨린 뒤 변환 버튼을 클릭하면 알아서 변환함
   인식하는 파일 포맷은 AVI, MKV, MP4, MOV, OGM, FLV

2. 저장 위치는 기본적으로 원본 폴더이며, 저장할 폴더를 지정할 수 있음

3. 결과 파일은 원본 파일명 앞에 [VCi]를 붙임
   필요시 추가로 싱크를 보정하며, 결과물은 원본 파일명 앞에 [VCi-DC]를 붙임

4. 비디오 스트림은 원본에서 추출하며, 오디오 스트림은 추출한 뒤 AAC-LC로 변환해서 다시 합침
   오디오가 AAC-LC일 경우 재인코딩은 옵션 선택에 따라 안할 수도 있음

5. 아이폰4 재생가능 여부 관련 체크박스가 있는데, 체크하면 스펙에 명시된 규격을 넘어설 때 처리하지 않음
   기본값은 체크이며, 체크를 권장함

6. 5번과 무관하게 비디오 포맷을 확인해서 H.264MPEG-4 Visual이 아니면 처리하지 않음

7. 플래쉬 비디오(flv)도 변환하는데, 역시 비디오 포맷이 5, 6번의 범위가 아니면 처리하지 않음
   단, flv 추출 프로그램은 .NET FW 2.0 기반으로 되어있기 때문에 flv를 변환하려면 반드시 FW을 설치해야 함

8. 원본 파일과 같은 이름의 오디오/자막 파일이 같은 폴더에 있으면 그 파일을 사용함

9. 내부 오디오가 여러개일 때는 사용할 오디오의 우선순위를 국가코드로 지정할 수 있음

10. 내부/외부 오디오가 여러 개이며, 우선순위를 지정하지 않으면 다음 순서로 하나를 선택함
   AAC → WAV → DTS → AC3 → MP3 → MP2 → OGG (합치기만 하면 되는 오디오 → raw 오디오 → 음질 순)

11. 내부 자막은 SRT, ASS(SSA)를 인식하며, 있는 그대로 사용하고, 외부 자막은 SMI → SRT 순으로 사용함
   다중 언어 SMI는 모든 자막을 다 변환해서 사용하며, KRCC/ENCC/EGCC/JNCC를 각국어로 인식함
   원본 자막 파일 형식은 ANSI, 유니코드-BOM, 유니코드 UTF-8를 지원하며 알아서 인식해서 완벽히 변환
   ※ 내부적으로 유니코드만 사용하기 때문에 변환하지 못하는 글자는 없으며 최대한 오류를 보정함

12. 원본의 내부 자막이 여러 개이거나 SMI가 다중언어로 구성된 경우는 모든 국가의 자막을 변환
   외부자막이 SRT인 경우는 다중자막 적용 불가하고, 외부자막으로는 ASS/SSA를 지원하지 않음

13. 출력되는 자막의 크기는 18/24/36/48포인트를 사용가능한데, 이는 아이패드를 위한 것임
   하지만, 아이폰/아이패드의 퀵타임 재생기가 자막의 크기를 인식하지 않기 때문에 아직은 의미 없음

14. 원본 비디오의 delay 값을 인식하고, 이를 적용해서 오디오/비디오 싱크를 맞춤.
   또한, 추가적으로 원본과 생성본의 비디오 길이를 비교해서 필요시 싱크를 한번 더 맞춤.

15. 아이폰4 뿐 아니라, 아이폰 3 계열, 아이패드 모두 사용 가능하며, 변환 후 재생이 안 되면 더 이상은 어쩔 수 없음

16. 선택한 옵션은 모두 레지스트리에 저장되며, 저장 시점은 변환을 시작했을 때와 저장 버튼을 클릭했을 때임.
   즉, 옵션을 선택하고 프로그램을 종료하는 경우는 저장하지 않음
   저장위치는 \\HKEY_CURRENT_USER\Software\BLUEnLIVE\Video Converter for iPhone

17. VCi는 다양한 미디어 관련 프리웨어의 프론트엔드이며, 직접 변환에 개입하는 것은 자막이 유일함
   VCi에서 사용하는 프리웨어 8종은 다음과 같음
   ffmpeg, MKV Extract, Media Info, MP4Box, FLV Extract, Nero AAC Encoder, OGM Demuxer, normalize

프로그램은 아래 링크에서 다운받을 수 있다.


덧1. 막상 정리하고 보니, 기능이 정말 많이 추가되었다. 처음 계획한 건 이렇게 많은 기능이 아니었는데… ㅎㅎ

덧2. 아이콘을 훨씬 평범(?)한 것으로 바꿨다. ㅋㅋ


2010.12.7: 2.0a 업데이트
 - 자막 글꼴의 크기를 18, 24, 36, 48pt로 설정 가능
 - StatusBar를 고정폭 글꼴로 변경

2010.12.11: 2.1 업데이트
 - 아이콘 또 변경
 - 동영상 정보를 조금 더 상세히 출력
 - mkv 내장 자막 변환시 자막 종류를 확인하도록 수정
 - mkv 내장 자막 중 srt 외에 ASS(SSA)도 변환하도록 수정 / 외부 ASS/SSA는 처리하지 않음

ASS 포맷의 내장 스페인어 자막도 완벽하게 변환함 v^.^v


 - baseline 지정 기능 제거 (불필요)
 - 재생가능 비디오 규격 확인을 정확하게 하고, 재생 불가능 이유 표시하도록 수정 (재생가능 비디오 규격 확인 권장함)
 - 비디오 fps가 30 이하인지 확인하는 옵션을 별도로 분리 (아이튠즈는 30fps 이상도 올릴 수 있음)
 - 버그 수정: no sub를 no audio로 표시했던 버그 수정
 - 버그 수정: 일부 H.264를 재생되지 못하게 profile을 잘못 지정했던 버그 수정

2010.12.13: 2.2 업데이트
 - AAC 자동 인코딩 옵션의 기본값을 off로 변경
 - 정보창의 글꼴 크기 줄이고, 내용 정리
 - 버그 수정: 가끔 실행 오류 발생하던 현상을 수정.
   임시 폴더 지정의 오류로 수시로 임시 폴더를 확인/수정하도록 변경

2010.12.13: 2.3 업데이트
 - 실행권한 상승으로 Windows 7에서 보다 안정적인 동작 보장
 - MPEG4 비디오 코덱 중 구형 코덱인 DIV3/DIV4/DIV5은 처리하지 않도록 수정

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년 12월 2일 목요일

아이폰용 동영상 한방에 변환하는 툴: 초 완벽 버전 업뎃

새버전인 2.0으로 업데이트 했습니다. 새버전을 이용해주시기 바랍니다.

by BLUEnLIVE | 2010/11/15 01:21

아이폰(아이패드, 아이팟 터치)의 단점 중 하나는 동영상을 보기 위해서는 재압축을 해야 된다는 것이다. 이 점은 이미 없어져버린 진정한 스...


앞에 포스팅한 아이폰 용으로 한방에 변환하는 툴에서 사소한 부분을 수정하면서 새롭게 포스팅한다.
앞의 포스팅은 너무나 기능 구현에만 집중한 나머지 사용법 설명이 부족한 면이 있었다.

프로그램을 만드는 과정에서의 쓸데 없는 자랑은 최대한 배제하고, 사용법 위주로 포스팅 하겠다.

내가 만드는 프로그램의 틀은 거의 이런 식이라 이제 굉장히 식상함. ㅎㅎ


이 프로그램의 제목은 VCi: Video Converter for iPhone으로 아이폰을 전면에 내세우는 변환기이다.
하지만, 이 프로그램은 실제로 거의[footnote]거의 라는 표현을 쓴 이유는 자막은 직접 변환하기 때문이다. 자막은 정말로 거의 완벽하게 변환한다.[/footnote] 아무런 변환도 하지 않으며 각종 CLI 툴의 프론트엔드만공한다.

이 프로그램은 이미 잘 알려진 @snoopybox 님의 아이폰 4 AVI, MKV 동영상을 MP4로 한방에 변환하기에서 많은 아이디어를 빌렸으며, 구현 과정에서도 많은 참고를 했다.

이 프로그램의 기능 및 특성은 아래와 같다.

1. 변환을 원하는 파일을 비디오 파일 목록에 떨어뜨린 뒤 변환 버튼을 클릭하면 알아서 변환함

2. 저장 위치는 원본 폴더이며, 결과 파일은 원본 파일명 앞에 [VCi]를 붙임
   필요시 추가로 싱크를 보정하며, 결과물은 원본 파일명 앞에 [VCi-DC]를 붙임

3. 비디오 스트림은 원본에서 추출하며, 오디오 스트림은 추출한 뒤 AAC(LC)로 변환해서 다시 합침

4. 원본 파일과 같은 이름의 오디오/자막 파일이 같은 폴더에 있으면 그 파일을 사용함

5. 내부/외부 오디오가 여러 개일 때는 AAC → WAV → DTS → AC3 → MP3 → MP2 순으로 하나만 사용함
    이 순서의 의미는 합치기만 하면 되는 오디오raw 오디오음질 좋은 순서

6. 내부 자막은 전혀 사용하지 않으며, 외부 자막의 순서는 SMI → SRT 순임
    SMI 파일의 모든 자막을 다 변환해서 사용하며, KRCC는 한국어, EGCC/ENCC는 영어 JNCC는 일본어로 인식함
   원본 자막 파일 형식은 ANSI, 유니코드-BOM, 유니코드 UTF-8를 지원하며 알아서 인식해서 완벽히 변환함
   ※ 1.0에서는 대문자만 인식했으나, 1.1에서 소문자(krcc 등)도 인식하도록 수정

7. 저장 위치를 따로 지정하는 기능은 없음. 스누피 님 프로그램에 대한 오마쥬임

8. 아이폰4 해상도 관련된 체크박스가 있는데, 체크하면 스펙에 명시된 해상도를 넘어설 때 처리하지 않음
   디폴트 값은 언체크인데, 해상도를 넘어서도 재생하는 경우가 종종 있기 때문임

9. 7번의 체크박스와 무관하게 비디오 포맷을 확인해서 H.264와 MPEG-4 Visual이 아니면 처리하지 않음

10. 플래쉬 비디오(flv)도 변환하는데, 역시 비디오 포맷이 8번의 범위가 아니면 처리하지 않음
   단, flv 추출 프로그램은 .NET FW 2.0 기반으로 되어있기 때문에 flv를 변환하려면 반드시 FW을 설치해야 함

11. 원본 비디오의 delay 값을 인식하고, 이를 적용해서 오디오/비디오 싱크를 맞춤.
   또한, 추가적으로 원본과 생성본의 비디오 길이를 비교해서 필요시 싱크를 한번 더 맞춤.
   (뭔가 좀 어려운데, 별도로 포스팅할 예정임)

12. 아이폰4 뿐 아니라, 아이폰 3 계열, 아이패드 모두 사용 가능하며, 변환 후 재생이 안 되면 해상도 문제라 어쩔 수 없음

새 버전은 아래 링크에서 다운받을 수 있다.


덧. 아주 아주 사소한 버그가 하나 발견되어 1.1b로 패치함. ㅡ.ㅡ;



2010.11.18: 1.2 업데이트
   - AVI에 저장된 H.264 동영상 변환불가 문제 수정
   - [VCi-DC] 버전 생성시 딜레이 계산을 조금 더 정확하게 수정
   - 원본 비디오의 크기가 4GB를 넘으면 변환을 사전에 중단
   - 조금 더 안정적인 MP4Box 사용

2010.11.18: 1.2b 업데이트
   - 4GB 이상 파일의 처리를 체크박스로 선택 가능하도록 수정, 기본값은 크기 제한 없음
      ※ 확인 결과 최신 MP4Box는 4GB 이상 파일도 이상 없이 처리함
   - ffmpeg.exe를 최신버전으로 교체

2010.11.20: 1.3 업데이트
   - SMI → SRT 변환시 다중 자막에 대한 처리 보강.
     <SYNC start=00><P class=KRCC>한글<P class=ENCC>영어 구조도 정상적으로 처리

2010.11.21: 1.4 업데이트
   - 지원 확장자에 .mov 추가 (mp4 포맷의 mov 파일만 처리 가능)
   - 내부적으로 자막 처리에 UTF-8 대신 Signed UTF-8을 사용. MKV 포맷에 포함된 자막을 그대로 사용 가능
   - MKV 파일 변환시 포함된 자막을 모두 그대로 포함시킴

엄청나게 많은 자막의 위엄… ㄷㄷㄷ


   - AAC 오디오를 강제로 재인코딩하는 옵션 추가 (이전 버전은 무조건 재인코딩 없이 삽입)
   - AV 싱크 재조정 파일(VCi-DC) 생성 여부를 옵션으로 지정
   - 버그 수정: mp4에 포함된 H.264 비디오 프로파일을 High@3.1로 지정하도록 수정 (이전 버전에서는 mp4만 누락)

2010.11.22: 1.4a 업데이트
   - VCi-DC 생성이 필요 없다고 판단되면 생성하지 않음 (비디오 딜레이 값의 차이가 100ms 이하 등)
   - VCi-DC 생성시 VCi에 덮어쓰기 옵션 추가 (현실적으로 비추. 소요시간이 똑같음)

2010.11.25: 1.5 업데이트
   - 오디오 선택 기능 추가: 지정된 언어와 같은 언어의 오디오가 있으면 그 오디오 사용
   - .\tools 폴더 존재 여부 확인. 폴더가 없으면 실행되지 않음
   - 파일 목록에서 delete 키를 눌러 목록 삭제 가능 (이 기능을 왜 이제야 구현했지? OTL)

2010.11.28: 1.7 업데이트
   - iOS 4.2에서 자막의 속성이 제대로 나오도록 수정 (그렇다! 이 골치아픈 문제를 해결한 것이다!)
      : 이전 버전으로 변환해서 <font> 태그가 그냥 출력되는 동영상은 새 버전으로 재인코딩[footnote]물론, 오디오를 재인코딩할 필요는 없다. 따라서, 파일 크기에 따라 다르지만 5분 이내에 수정 가능하다.[/footnote]하면 한방에 수정해줌
   - Status Bar를 사용하도록 인터페이스 수정
   - 변환중인 파일의 비디오/오디오/자막 정보 출력

2010.11.28: 1.7a 업데이트
   - <font color="fff76a"> 처럼 #가 누락된 경우도 적절히 처리하도록 수정.
      단, HTML 포맷 중 rgb(255,247,106) 형식은 지원하지 않음. (과연 필요할까?)

2010.12.1: 1.7b 업데이트
   - <font color="#fff76a"><br>어쩌고 처럼 행에 내용은 없이 컬러코드만 있으면 엔터가 들어가지 않도록 수정

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가 유일한 것 같음!

2010년 11월 27일 토요일

iOS 4.2에서 많이 변한 동영상 플레이어

by BLUEnLIVE | 2010/11/20 04:07

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


iOS가 4.2로 업데이트 된지 며칠이 지났다.
AirPlay나 AirPrint 등 다양한 새로운 기능도 추가되었고, 약간의 성능 하락도 지적되고 있다.
하지만, 그렇게 추가된 기능들은 나에겐 큰 효용이 없어보인다.

내가 주목한 것은 동영상 플레이어다. 다소 변경되었는데, 의외로 전혀 알려지지 않고 있다.

우선 인터페이스가 아주 약간 바뀌었다.


iOS 4.1에서 왼쪽에 있던 자막 선택 아이콘이 오른쪽으로 이동했다.
왜 굳이 이걸 오른쪽으로 옮겼는지는 잘 모르겠지만, 어쨌거나 이동했다.

이보다 훨씬 심각하게 변한 부분은 자막 처리다.

아래와 같은 srt 자막을 동영상에 끼워넣으면...

2
00:01:09,085 --> 00:01:12,533
<font color=red>red영어 자막 제작
Patay_Gutom_Na_Chickboy
<font size=2>(http://subscene.com)

iOS4.1 에서는 2% 부족하긴 하지만, 아래와 같이 원하는 자막이 나온다.


하지만, iOS 4.2에선 아래와 같은 충격적인(?) 결과가 나온다.


이게 뭐냐고?  애플의 소프트웨어 엔지니어들은 죄다 ㅂㅅ들인 건가?

아니다. 절대 아니다.

이건 절대로 애플의 문제가 아니다.
MP4Box는 srt 자막을 ttxt 포맷으로 변환하는데, 이 과정에서 <font> 태그는 정상적으로 변환하지 않는다.
오히려 iOS 4.1에서 자막에 들어있는 <font> 태그를 처리하는 것이 비정상이었던 것이다.

어쨌거나 iOS 4.2는 난감.

2010년 11월 20일 토요일

유니코드를 처리하지 못하는 Subtitle Workshop

by (Sleepy) | 2008/12/08 19:15

자막 작업의 왕, Subtitle Workshop. from IT, PC/• Software 2008/12/08 19:15. 오늘 소개할 Subtitle Workshop은 감히 자막 편집기의 최고봉이라 말할 수 있을 것 같다. 자막 제작, 수정, 변환, 오류정정에 이르기까지 자막에 관련된 모든 작업을 지원 ...


Subtitle Workshop은 자막을 제작하고, 다른 포맷으로 변환하는 데 있어 굉장한 능력을 보여준다.
아마도 자막 관련 통합 툴 중에서 이만한 완성도를 보이는 프로그램은 없었던 것 같다.

하지만, 유니코드를 전혀 처리하지 못하는 치명적인 단점이 있다.


1. 유니코드(BOM) SAMI 미지원

이 점에 대해 우선 분명히 짚어야 할 점은 유니코드 SAMI라는 포맷 자체가 비정상적인 포맷이라는 것이다.

SAMI Structure and Declaration

Because SAMI is based closely on HTML, it has a similar (but not identical) component construct that makes it an easy format to learn and edit. All SAMI documents must begin with a <SAMI> tag and end with a </SAMI> tag.


<Understanding SAMI 1.0에서 발췌>


MS에서 작성한 Understanding SAMI 1.0에서 분명히 얘기하듯이 SAMI라는 포맷은 HTML에 기반을 둔 포맷이다.

하지만, HTML과 달리 텍스트 인코딩을 지정하는 기능이 없다.
SAMI의 한글 코드는 묵시적으로 확장 완성형 한글을 사용하고 있어 유니코드의 글자를 모두 표시할 수 없다.

우리나라의 사용자들은 이런 상황을 극복(?)하기 위해 그냥 SAMI 파일을 통째로 유니코드로 저장하기로 했다.
또한, 플레이어를 만드는 개발자들도 이에 동조해서 유니코드 포맷의 SAMI를 처리하고 있다.

그런데, SAMI의 기본을 생각해보면 SAMI에서 유니코드를 사용하려면 부호 있는 UTF-8을 사용했어야 했다.
하지만, 이젠 늦었다. 그냥 이렇게 갈 수 밖에 없다.

각설하고, 이 말도 안 되는 유니코드 SAMI는 Subtitle Workshop에서 읽을 수 없다.
그리고, 워낙에 말도 안 되는 포맷이라 앞으로도 Subtitle Workshop에서는 지원하지 않을 것이다.


2. SRT/UTF-8 미지원

이건 유니코드 SAMI와 완전히 다른 얘기다.

SRT 파일은 ANSI 포맷 외에, UTF-8 포맷으로도 저장할 수 있다.
특히, 아이폰 내장 비디오 플레이어는 UTF-8 포맷의 SRT 파일만 재생이 가능하다.

아이폰 재생 화면: 자막은 [아바타] 감성 버전. 영상은 전혀 무관한 [딱따구리]


즉, SRT는 SAMI와 다르게, 기본적으로 유니코드를 지원한다.

하지만, Subtitle Workshop 이 SRT/UTF-8를 전혀 읽거나 쓰지 못한다.


3. 글자 속성의 파괴

이 부분은 정말 이해가 되지 않는 부분이다.

SAMI는 (다른 자막 포맷과 마찬가지로) 다양한 글자 속성을 지원한다.
<b>, <i>, <font>, <u> 등등...
지원되는 속성와 형식은 SRT도 유사하다.

그런데, Subtitle Workshop는 어떤 글자 속성이든지 <i>로 대체해버린다.
난 한동안 SRT는 <i>밖에 지원하지 않는다고 생각할 정도였다.


결론적으로, Subtitle Workshop은 유니코드 SAMI를 SRT/UTF-8로 제대로 변환하지도 못하고, 글자 속성도 파괴한다.
자막 작업의 왕이라고 부르기엔 너무 커다란 헛점이 있는 것이다.

VCi를 만들면서 자막 변환 부분을 직접 제작한 이유가 바로 이런 점 때문이었다.
VCi는 유니코드 포맷 자막을 직접 읽어 완전하게 UTF-8 유니코드로 변환한다.

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

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

2010년 11월 15일 월요일

아이폰 동영상 한방에 변환하는 툴: 완벽 버전

새 버전이 공개되었습니다. 새 버전을 이용해주시기 바랍니다.

아이폰(아이패드, 아이팟 터치)의 단점 중 하나는 동영상을 보기 위해서는 재압축을 해야 된다는 것이다.
이 점은 이미 없어져버린 진정한 스마트폰 없냐부터, 곧 없어질 갤럭시[footnote]벌써 갤럭시2에 대한 언플이 솔솔 들려온다. 갤S도 금방 버려질 거란 뜻. 하지만, 아이폰 3GS는 여전히 지원된다.[/footnote]까지 계속 애플 공격의 소재로 사용된다.

실제로 아이폰에서 동영상을 볼 수 있도록 재압축해주는 프로그램을 이용해보면 몇 시간씩 걸리는 게 사실이다.

하지만, 조금만 생각해보면, 굳이 이런 프로그램을 이용해서 긴 시간을 낭비할 필요가 없다.
동영상 파일은 비디오+오디오+자막으로 되어있고, 재압축 소요 시간의 대부분은 비디오(+자막) 재압축에 소요된다.
이 중 비디오 부분은 재압축할 필요가 없는데 굳이 재압축되는 것이 일반적이다.
PC에 저장된 동영상 중 비디오 스트림은 거의 H.264 또는 MPEG-4 Visual로 되어있기 때문이다.
(MPEG-4 Visual이라는 표준을 구현한 코덱이 바로 DivX, XviD 등등임)

iPhone 4에서 재생 가능한 동영상. apple.com에서 발췌.


이러한 점을 이용하면 큰 시간을 낭비하지 않고 아이폰에서 재생되는 동영상을 만들 수 있다.
즉, 오디오 부분만 쏙 빼서 다시 AAC로 인코딩해서 .mp4 컨테이너에 저장하면 되는 것이다.
또한, 자막은 smi 파일을 srt 포맷으로 변환하면 된다.

이 아이디어를 최초로 구현한 프로그램이 @snoopybox 님의 아이폰 4 AVI, MKV 동영상을 MP4로 한방에 변환하기이다.
이 프로그램은 순전히 공개 S/W만 이용해서 이런 작업을 한방에 변환하는데, 프로그램은 무려 배치파일[footnote]일부 기능은 간단한 프로그램을 통해 별도로 구현됨.[/footnote]로 작성되었다.

하지만, 그 프로그램은 배치파일이라는 태생적 약점으로 기능의 한계[footnote]비디오/오디오 딜레이 보정 기능이 없고, 변환할 수 있는 동영상이 제한됨. 또한, 자막 처리에 많은 한계가 있음.[/footnote]가 좀 있었다.

이제, 거의 모든 동영상을 손쉽게 아이폰 용으로 변환할 수 있는 툴을 공개한다.
이 프로그램은 avi, mkv, ogm, flv, mp4 포맷의 동영상을 아이폰에서 재생가능한 포맷으로 변환해준다.
변환시 싱크 오류를 최대한 보정하며, 자막 역시 거의 완벽하게 변환해준다.

파일을 추가할 땐 드래그 앤 드롭 기능을 사용하면 됨


이 프로그램의 특성은 아래와 같다.

1. 소스 파일의 비디오 정보를 확인해서 아이폰에서의 재생 가능 여부를 최대한 확인함

2. 원본 파일의 딜레이 정보를 확인해서 싱크를 완벽히 맞춤

3. 원본과 변환된 동영상의 길이 정보를 확인해서 싱크를 추가로 보정한 버전을 별도 생성

4. smi 자막을 정말 완벽히 변환함

자막을 굳이 비디오에 끼워넣고 재인코딩할 필요는 전혀 없음


   거의 모든 자막 변환 프로그램은 유니코드 포맷의 smi/srt 파일을 제대로 처리하지 못한다.

   사실, smi 파일 중에 유니코드 포맷도 있으며, 아이폰에서는 UTF-8 포맷의 srt 파일을 지원한다.
   즉, 유니코드에서만 사용할 수 있는 문자를 두 포맷 모두 지원하는 것이다.
   하지만, SubtitleWorkshop을 비롯한 자막 변환 프로그램들은 단지 ANSI 버전의 srt만 지원한다.
   심지어 그 프로그램은 자막에 적용된 글자 속성들도 모두 파괴해버린다.

   하지만, 본 프로그램은 ANSI/유니코드 BOM/UTF-8 포맷 smi를 완벽히 인식하고, 유니코드 UTF-8 srt로 변환한다.

   또한, smi 파일에 여러 언어의 자막이 들어있는 경우 모든 자막을 함께 변환한다.

2개국어 동시 지원


5. mkv, avi는 물론 ogm, flv 포맷까지 지원함.
   요즘은 보기 드문 ogm은 물론, 유튜브에서 다운받은 flv까지 변환함으로써 거의 모든 동영상을 지원한다.
   심하게 말하면 지원되지 않는 동영상은 wmv 계열 뿐이다.

6. 같은 파일명의 오디오 파일이 있으면 파일 내부에 들어있는 오디오 대신 그 오디오를 사용함
   (여러 개의 오디오 파일이 있으면 aac → wav → dts → ac3 → mp3 → mp2 순으로 적용)

7. 같은 파일명의 자막 파일이 있으면 그 자막 파일을 사용함.
   (파일 내에 들어있는 자막은 사용하지 않음)


본 프로그램은 아래 링크를 클릭하면 다운받을 수 있다.



덧1. 앞에 간략히 얘기했듯이 이 프로그램은 많은(정확히는 7 종의) 프리웨어를 사용하는 프론트엔드이다.
ffmpeg, MKV Extract, Media Info, MP4Box, FLV Extract, Nero AAC Encoder, OGM Demuxer를 사용한다.

이 중 FLV Extract는 .NET Framework 2.0 환경에서 개발된 프로그램이다.


덧2. 샘플에 사용된 동영상은 1963년의 걸작 007 영화 [위기일발]이다.
예전에 리뷰 쓰면서 립해둔 것을 지우지 않고 재활용했다. 물론, 개인 용도로 쓸 뿐 재배포는 결코 하지 않는다.

2010년 10월 25일 월요일

아이폰 사진 보관함 정렬 순서 바꾸기

아이폰에서 사진을 보여주는 순서는 파일명 순이 아니다. (iOS 4.x 기준)
순서는 다음과 같은 기준으로 이루어진다.

1. Exif에 기록된 편집일자
2. Exif에 기록된 생성일자
3. 파일 수정일자
4. 파일 생성일자

이러한 순서는 디지털 카메라로 찍은 사진만 있을 경우엔 여러모로 도움이 된다.
다양한 카메라로 찍은 사진을 저장하기만 하면 시간 순으로 보여주기 때문이다.

그런데, PNG 파일과 JPEG 파일을 같이 보관하고, 다양한 편집을 한 결과를 같이 보관할 때는 문제가 좀 있다.
예를 들면, Darth.jpg와 이를 편집한 Darth_frame.jpg를 같이 저장하면 두 이미지는 같이 보여지지 않는다.


즉, 파일명의 순서와는 무관하기 때문에 위에서 보는 것과 같이 관련된 이미지를 함께 볼 수가 없는 것이다.
아이폰에서 관련된 이미지를 함께 보려면 파일의 생성/편집 일자와 Exif 일자를 몽땅 바꾸는 방법 밖에 없다.

이런 작업을 일괄적으로 할 수 있도록 간단하게 프로그램을 하나 만들었다.


이 프로그램은 아이폰에서 사진을 동기화할 폴더를 지정한 뒤에 원하는 순서대로 배치를 하고 날짜정보를 수정한다.
폴더 지정은 아이튠즈에 동기화하는 폴더를 에디트 박스에 드래그 앤 드롭만 하면 된다.
그리고, 다음과 같은 정렬 순서를 지원한다.

1. 날짜 순 (iOS 4.x 기본값)
2. 폴더 및 파일명 순 (폴더 순으로 정렬한 뒤 파일명 순으로 정렬)
3. 파일명 순 (폴더에 무관하게 파일명 순으로 정렬)

원하는 순서로 배치한 뒤에 Apply! 버튼을 클릭하면 Exif 정보를 포함한 파일의 날짜를 일괄적으로 수정해준다.
(현재 날짜와 시간을 기준으로 1초씩 차이가 나도록 수정)

이렇게 수정한 뒤 사진 폴더를 다시 동기화 시키면 아래 캡쳐화면처럼 관련 이미지들을 함께 볼 수 있다.


이 프로그램은 아래에서 다운받을 수 있다.


2010년 10월 11일 월요일

아이폰4 캐리어 문구 변경 성공!

아이폰을 탈옥하지 않아도 캐리어 문구(맨 위에 SHOW, SKTELECOM 등 적힌 것)를 바꿀 수 있는 방법을 찾았다.
iOS 4.0에서 쓰던 방법이 iOS 4.1에서 통하지 않아 헤맸는데, 솔루션을 Say2You 님의 블로그에서 발견했다.

자세한 방법은 해당 포스트(순정 아이폰4 SHOW 글자 바꾸기)를 참고하면 되며, 방법의 핵심은 아래와 같다.

1. 아이폰 데이터 백업
2. 백업 데이터를 iBackupBot for iTunes로 편집
3. Library/Preferences/com.apple.springboard.plist 에서 SBFakeCarrier 키를 만들고 원하는 문구 추가
4. 복원

이렇게 변경된 캐리어 문구는 다음과 같다.

아~싸!!


덧. JAFO 님의 지적으로 캐리어캐리어 문구로 수정.

2010년 10월 10일 일요일

모바일 페이지 만들기 관련 팁

by BLUEnLIVE | 2010/10/06 02:47

텍스트큐브닷컴은 모바일 페이지를 지원하라! by BLUEnLIVE | 2009/12/12 10:00 티스토리와 텍큐닷컴은 근본도 비슷하고, 기능도 여러모로...


Google Mobilizer를 이용하면 간단하게 모바일 페이지를 만들 수 있다.

하지만, 이 기능을 사용해보면 원하지 않는 화면이 나오는 경우가 종종 있다.
이 기능은 사람이 판단하는 것이 아니기 때문이다.

본 블로그를 Mobilizer에서 띄우면 아래와 같이 나오는데, 대략 3가지 문제점을 볼 수 있다.

1. 좌측상단 로고 출력
2. 첫화면이 본문이 아닌 우측 사이드 바
3. 본문으로 이동시 하단 페이지 이동 누락 및 불필요 이미지 출력

아이폰에서 이런 그림을 보고 싶지는 않다. OTL


이런 현상이 발생하는 원인을 정확히는 알 수 없지만, 동작 메커니즘을 추측하면 아래와 같다.

1. 블로그를 크게 아래와 같은 3부분(1-3)으로 구분
2. 좌측 상단 배너(1)는 단순 이미지로 판단
3. 본문은 좌우(2,3)로 구분되어 있으며, 무조건 오른쪽 div(3)를 본문으로 간주
4. 하단 댓글창의 BBCode 관련 이미지(4)는 단순 이미지로 간주
5. 하단 댓글창을 처리하면서 (실수로) 페이지 이동 누락


이 문제를 해결하려면 모바일 환경에서 보고 싶지 않은 부분을 숨김으로 지정한 뒤에 javascript를 이용해서 다시 보이도록 하면 된다. Google Mobilizer에서 javascript를 해석하지 않는다는 점을 활용하는 것이다.

즉, 위의 구성에서 1,3,4를 보이지 않게 설정한 뒤 바로 다음에서 보이도록 변경하면 원하는 화면을 볼 수 있다.

예컨데, 상단 배너의 경우 원래의 코드는 아래와 같다.

<img src='http://fs.textcube.com/blog/0/8395/skin/1/images/ROH-Banner.gif' alt='노무현 대통령 배너' border='0' usemap='#rohforever' id='textcubeSticker' />

이 부분을 아래와 같이 수정한다.
이미지의 위아래를 <div>로 묶고, 아래와 같이 id와 style을 부여한 뒤 바로 아래에 다음과 같은 코드를 추가하는 것이다.

<div id="rohbanner" style="display:none;">
  <img src='http://fs.textcube.com/blog/0/8395/skin/1/images/ROH-Banner.gif' alt='노무현 대통령 배너' border='0' usemap='#rohforever' id='textcubeSticker' />
</div>
<script type="text/javascript">
//<![CDATA[
var emo = document.getElementById("rohbanner");
emo.style.display = 'block';
//]]>
</script>

이런 식으로 만들어진 본 블로그의 모바일 페이지는 아래와 같다.

물론, 블로그 하단의 페이지 이동도 정상적으로 보임


덧. 이런 식으로 본문 내에 javascript 코드를 추가하는 것은 권장되는 방식은 아니다.

2010년 10월 6일 수요일

텍큐닷컴 블로그의 모바일 페이지 만들기

by BLUEnLIVE | 2009/12/12 10:00

티스토리와 텍큐닷컴은 근본도 비슷하고, 기능도 여러모로 비슷하다. 하지만, 세세하게 뜯어보면 지원되는 기능이 미묘하게 다른데, 그 중...



유사한 기반의 티스토리가 간단한 방식으로 모바일 페이지를 지원하는 것과는 달리 텍큐닷컴은 그런 거 없다.
오히려, 구글 코리아는 텍큐닷컴을 버릴 것이란 입장을 명확히 했기 때문에 앞으로도 그런 서비스는 없다.

하지만, 궁하면 통하는 법이요, 모든 솔루션은 구글에서 나오는 법.



1. 모바일 페이지 생성

Google Mobilizer라는 서비스가 있다.
이 서비스를 이용하면 멀쩡한(?) 블로그에서 모바일 페이지를 생성해준다.

이 서비스를 이용해서 본 블로그의 모바일 주소를 추출하면 아래와 같다.

http://www.google.com/gwt/x?u=http://zoc.kr/2

이로써 비교적 간단한 방법으로 모바일 페이지를 만들었다.


2. 자동으로 모바일 페이지로 전환

위의 방법이 간단한 방법이긴 하지만, 그렇다고, 저런 주소를 정말로 모바일 환경에서 입력할 수는 없다.
모바일 페이지에서 접속하면 자동으로 모바일 페이지로 넘어가도록 해보자.

텍큐닷컴의 스킨에서 <body> 바로 아래에 아래와 같은 코드를 삽입하면 된다.

<script type="text/javascript">
//<![CDATA[
if (navigator.userAgent.match(/Mobile|Windows CE|Windows Phone|Opera Mini|POLARIS/) && !navigator.userAgent.match(/iPad/))
    location.href = "http://www.google.com/gwt/n?u=http://(블로그주소)" + location.pathname;
//]]>
</script>

이 코드는 브라우저에서 페이지를 읽었을 때 모바일 환경이라면 위에서 설명한 모바일 페이지로 이동시킨다.


이렇게 만들어진 내 블로그를 아이폰에서 띄우면 아래와 같은 결과가 나온다.
비록 페이지 이동 등의 기능은 정상동작하지 않지만, 아쉬운 대로 쓸 수는 있다. OTL


덧. 본 포스팅 작성시  블로그를 모바일 페이지로 만들기자동으로 모바일 페이지로 이동하기가 큰 도움이 되었다.

2010년 9월 26일 일요일

한글 풀어쓰기→모아쓰기를 통해 얻은 지식들

by BLUEnLIVE | 2010/09/24 09:30

아이폰은 단점이 없는 완벽하고도 지고지순한 폰이 아니다. 철학이 뚜렷하고, 이에 따른 장단점이 명확히 나뉘는 폰이다. 그런데, 그런 원인...



1. 유니코드의 한글자소는 초중종성 정보가 있는 것과 없는 것이 별도로 존재

유니코드에는 (당연히) 음절 단위의 글자 외에도 한글자소가 별도로 존재한다.
그런데, 이 자소에는 초중종성의 정보가 있는 자소와 없는 자소가 별도로 존재한다.

일단, 정보가 있는 자소U+1100 부터 시작된다.
현대어→고어 순으로 할당되어 있으며, 현대어에는 ㅄ같은 문자가 초성에 할당되어있지 않았다.

초중종성 정보가 포함된 한글자소: U+1100부터 시작됨. 아래 표시된 부분은 종성 'ㄱ'


초중종성 정보가 없는 자소U+3131 부터 시작된다.
여기는 자음에 초성과 종성이 혼합되어 있으며, 이 순서는 완성형 한글의 순서와 정확히 일치한다.



2. 두 종류의 자소(U+1100, U+3131)를 완성형으로 변환시 문제 발생 가능

VC6은 기본적으로 유니코드가 아닌 완성형 코드를 지원한다.
그리고, 시스템에서 이를 유니코드로 변환할 때는 U+3131로 변환한다.
즉, 아래와 같은 코드를 실행시켰을 때...

CFileFind finder;
BOOL bOk = finder.FindFile(_T("c:\\*.txt"));
while (bOk)
{
  bOk = finder.FindNextFile();
  if (finder.IsDots() || finder.IsDirectory()) continue;
  _trename(finder.GetFilePath(), _T("c:\\말도안돼.txt"));
}

c:\ㅁㅏㄹㄷㅗㅇㅏㄴㄷㅙ.txt가 존재하더라도 한글자소가 U+1100으로 저장되어 있다면 rename되지 않는다.
왜냐하면 _trename()의 내부에서는 이런 순서로 진행되기 때문이다.

API: U+1100 → finder.GetFilePath(): 완성형 변환_trename(API): U+3131 변환

따라서, 멀쩡히 있는 파일명을 API를 통해 읽은 뒤 다른 이름으로 바꾸는 작업이 불가능할 때도 있는 것이다.
물론, 해결책은 있고, 간단하다. 컴파일러를 유니코드 모드로 설정하면 된다.


3. 유니코드 한글은 조합형으로 구성되었음

한글을 조합하는 방법에 대해 이리저리 고민했는데, 알고보니 유니코드의 한글 코드는 조합형으로 구성되어있다.
보통 조합형 한글이라는 개념은 2바이트(16비트)를 1비트(무조건 1)+5비트(초성)+5비트(중성)+5비트(종성)으로 구성하는 방식을 의미한다.


하지만, 유니코드의 한글은 이런 비트를 조합하는 방식은 아니다. (그런 테이블을 할당받을 수도 없음)
U+AC00부터 초성 19자, 중성 21자, 종성 28자를 순서대로 배치하는 것이다.


예컨데, 이라는 글자의 코드는 U+AC00 + 7(ㅂ)*21*28 + 15(ㅞ)*28 + 9(ㄺ) = U+DBC1이다.
이러한 원리를 이용해서 간단한 식만으로 한글을 조합하거나, 자소를 분리해낼 수 있는 것이다.

유니코드의 각국어 할당표를 만드는 과정에서 여러나라들의 수많은 알력이 있었다.
유니코드의 한글구성표를 만드는데 노력하시고, 박터지게 싸우신 모든 분들께 감사드린다.


덧. VC++ 6.0도 유니코드를 기본으로 사용할 수 있음

메뉴에서 Project → Settings... 선택한 뒤, C/C++ 탭에서 Preprocessor definitions:를 찾는다.
여기서 _MBCS를 찾아 _UNICODE로 바꾼다.


다음으로, Link 탭에서 Output을 선택한 뒤 Entry-point symbol:wWinMainCRTStartup으로 지정한다.


2010년 9월 24일 금요일

아이튠즈 보조 어플: 풀어쓰기로 변한 한글을 다시 모아주자!

아이폰은 단점이 없는 완벽하고도 지고지순한 폰이 아니다.
철학이 뚜렷하고, 이에 따른 장단점이 명확히 나뉘는 폰이다.

그런데, 그런 원인으로 발생하는 단점과는 무관하게 버그성 단점도 눈에 띈다.

그 중 눈에 확 띄는 건 저주의 아이튠즈 풀어쓰기 문제.

아이튠즈를 통해 응용 프로그램의 도큐먼트를 업로드하면 한글을 무참하게 풀어버린다.

인간적으로 이건 좀 너무하지 않냐!


내부적으로는 어떤 일이 벌어지는지는 모르겠지만, 이런 상황 자체가 이해가 되지 않는다. 어허허.
파일명을 몽땅 영어로만 올리면 되긴 하지만, 언제나 그렇게 할 수는 없다.

폴더를 지정하면 알아서 조합해주는 프로그램을 간단하게 만들었다.
이 프로그램의 기능은 단 하나다: 폴더를 지정하면 폴더에 저장된 풀어쓰기 한글을 몽땅 모아준다.

아래에서 다운받으면 되며,


실행 화면은 아래와 같다.


덧1. 풀어쓰기→모아쓰기 문제는 김용묵 님께 도움을 받았음
덧2. 이 프로그램은 VC6에서 유니코드를 잘 처리하지 못하는 문제 때문에 VS2008로 만들었다 VC6으로 다시 작업함
      이 문제를 찾는데 @nunadly 님과의 대화가 큰 도움이 되었음
덧3. 유니코드엔 초중종성 정보가 있는 한글자소와 없는 한글자소가 따로 있는 덕분에 약간 헤맸음
      이 내용은 별도 포스팅 예정

2010년 9월 21일 화요일

내가 선택한 아이폰4 케이스: SGP Neo Hybrid EX

아이폰의 디자인은 그 자체가 워낙에 완성도가 높아 디자인 쪽으로 보면 생폰이 진리다.

하지만, 금속 안테나가 전체를 두르는 구조덕분에 수신율 문제도 있고, 강화유리 자체의 취약성(충격에 약함)도 있어 생폰을 쓸 자신은 없어 디자인을 해치지 않는 범위 내에서 케이스를 고르기로 했다.

처음에 필이 꽂힌 케이스는 도아님이 추천한 ELEMENT CASE Vapor.
하지만, 현재 구하기도 힘들 뿐더러, 가격이 너무 비싸 포기했다. OTL.

그래서 고른 것은 Neo Hybrid EX.


처음 주문할땐 내구성 문제니 뭐니 하면서 9월 말이 넘어야 받을 수 있을 것 같았는데, 다행히 금방 받을 수 있었다.

선택한 색깔은 검은색을 돋보이게 하는 건메탈로, 앞면, 뒷면 커버 및 테두리(고무 및 외부)로 구성되어 있었다.


설치 과정은 아래와 같다.


그리고, 설치된 모습은 아래와 같다.

촬영은 노캬 오팔이가 수고를…


케이스를 씌움으로써 본격적인 아이폰4 라이프가 시작된 것이다. 홍홍

린이 짱이를 점령한 아이폰 어플 "Talking Tom Cat"


아이폰4가 손에 들어온지 1주일이 되어간다.
이런 저런 앱을 많이 설치했는데, 그 중 린이와 짱이를 점령한 건 Talking Tom Cat이었다.

이 어플은 사실 특별한 기능은 없다.
마이크 대고 얘기하면 약간 귀엽게 변형해서(즉, 주파수를 좀 올려서) 들려주는 기능이랑, 고양이 때리고 달래는 기능 뿐.
더불어 그러는 과정을 녹화해서 유튜브에 올리는 기능이랑…

그런데, 이 기능들은 진정한 감성어플로서의 역할을 톡톡히 한다.

린이와 짱이는 이 고양이에게 말을 걸고  쓰다듬고, 우유를 주고, 때리기도 하면서 아이폰과 정을 들이고 있다.
더 정들기 전에 아이폰에 손 못대게 해야 되는데… 은근 걱정된다… ㅋ

아래는 린이의 말을 따라하는 샘플 동영상.

안녕. 잘 잤어?



무시무시한 퀄리티의 아이폰4의 얼굴시간(Facetime)

정말로 이와 유사한 퀄리티로 화상대화가 가능함. ㄷㄷㄷ


아이폰4를 받고나서 주변에서 아이폰4를 쓰시는 분들과 얼굴시간(Facetime)을 시도해봤다.
도아(@doax) 님 및 김남훈(@namhoon) 님과 얼굴시간을 해보니… 대단한 수준이었다.

일단 화질이 생각한 것 이상으로 좋았다. 아니, 무시무시한 수준이었다.
포터블 디바이스에서의 동영상 실시간 인코딩이 이정도 수준일 것이라고 예상하지 못했다.

또한, 대화에 아무런 무리가 없을 정도로 지연이 느껴지지 않았다.
화상통화의 기본은 단순하다. 카메라로 동영상을 압축하고, 네트워크로 전송한 뒤 수신쪽에서 압축을 해제하는 것.
문제는 이 과정 모두가 시간을 무지막지하게 잡아먹는 과정들이라는 것.
Facetime은 이 과정에서의 딜레이가 거의 없어 대화를 자연스럽게 이어갈 수 있었다.

Facetime이 공개되자, 안드로이드 진영에서도 유사한 서비스를 통해 경쟁하겠다는 발표를 했다.

사실, Facetime은 아이폰4의 하드웨어를 이용하는 어플(소프트웨어)일 뿐이다.
그리고, 쉽게 생각하면 안드로이드에도 카메라 달려있고, 동영상 인코딩/디코딩도 되며,  전송도 할 수 있다.

즉, 유사한 기능을 제공하는 어플은 큰 시간을 들이지 않고 개발할 수 있을 것이다.

하지만, 시간을 들여 개발한 어플과 부랴부랴 베껴서 만든 어플의 완성도는 차이가 날 수 밖에 없지 않을까?


덧. 김남훈 님(의 커다란 얼굴 ㅋㅋ)과 생생한 화질로 대화를 하니 뭔가 좀 쑥스럽더라. ㅎㅎ

아이폰4 가입 삽질기: KT 니들은 멀었다


아기다리 고기다리던 아이폰4를 받았다.
S01E11 즉, 시즌1 11차였기 때문에 9월 15일(수)에 받을 수 있었다.

과연 기대했던 대로 명불허전, 극강의 스마트폰이었다. 하지만...


1. 예약

아이폰4를 예약한 것은 예판 첫날인 8월 18일이었다.
회사에서 점심시간에 짬을 내어 향한 곳은 다름 아닌 분당구 정자동에 있는 KT 본사 지하 고객센터.

과연 본사답게 고객의 속을 뒤집는 소리는 전혀 하지 않고, 만족할만한 답을 들을 수 있었다.

- 현재 사용중인 오팔이의 번호는 그대로 쓸 수 있음 (번호가 SKT 번호라 긴가민가 했지만...)
- 요금제는 실제 판매 때는 평생요금제가 나올 것이며, 만원 쌀 것임

그리고, 아이폰4는 같은 곳 즉, 본사 지하 고객센터에서 받는 것으로 신청했다.


2. 전화 안내

뭔가 불안함을 느낀 건 전화 안내였다.
수령지가 분당지사라고 한다.

순간 멈칫 했지만, 잘못 들었다고 내 맘대로 생각했다.


3. 그리고, 수령...

약속된 시간에 정자동 본사로 갔더니, 역시 제대로 들은 것이었다.
다시 이매동에 있는 분당점으로 이동했다. OTL...

뭐 그럴 수도 있다는 말로 스스로를 달래고 이매동으로 갔다.

일단은 서비스를 전문으로 하는 분이 아닌 분이 가입처리를 해줘서 가입절차를 잘 모르는 것 같았다.
(아마도 사무직이라 그런 듯. 하긴, 대리점에서 요금제를 몰라서 사는 분이 갈쳐줬단 분도 있었으니…)

그리고, 뼈저리게 느낀 KT의 막장 정신!

- 아이폰4 32G 받으러 왔삼. 어제 전화 받고 약속 시간 맞춰서 온 거임
   → 기계가 없어요. 1시간 뒤에 기계가 올 건데, 버틸 수 있으삼? 아님 어케 해줄까?
    : 개소리는 하지 마시고, 당장 기계나 내놓으세요. 어제 전화한 놈은 미친 놈이신가요?
   → (잠시 후) 아! 찾아보니 기계가 있네요.
    : 응? 응? 응?

- 근데, 평생요금제가 뭐삼?
   → 아. 그건 3년 이상 쓸 때만 싸요. 2년 이내에선 더 비싸요.
    : 요까진 수긍이 가능했음

- 오팔이 번호 SKT 건데 아이폰에 넣을 수 있나요?
   → (풋!) 번호 그대로 못 쓰죠. 전환가입해야죠.
    : 그거 누가 모르냐? 그래서 되는가 물어본 거잖아?

- 그럼 번호를 다 바꿀게요. A → B, C → D로. 근데, A로 전화하면 B가 아니라 D로 안내하게 할 수 있나요?
   → (풋!) 그거 다 해봤는데, 안 되요.

내가 그중 가장 개짜증 났던 건 바로 (풋!) 대목이었다.
얼굴 가득한 짜증으로 난 쳐다보며, 무식한 고객 하나 떨어내려는 그 태도는 대략 어이 상실…

아이폰을 통해 KT 고객이 엄청나게 늘었다.
하지만, 많은 아이폰 사용자들은 KT가 좋아서 쓰는게 결코 아니다. 오로지 아이폰 때문이다.

KT는 각성하라!

2010년 6월 10일 목요일

아이폰4의 FaceTime 동영상은 샘 맨데스가 감독

MGM이 휘청휘청하면서 차기 007 영화의 제작 여부가 불투명해졌다.
덕분에 주연을 맡은 다니엘 크레이그나 감독인 샘 멘데스의 행보도 불투명...

어쨌거나... 애플 아이폰4 관련 영상들을 보면 화상통신 프로그램인 FaceTime의 소개 영상은 샘 멘데스가 감독했다.
그는 [아메리칸 뷰티], [로드 투 퍼디션] 등의 감독다운 멋진 영상을 보여준다.

우리나라에선 특별하지도 않은 화상통신인데, 이 영상을 보면 마치 새로운 기능을 보는 듯한 느낌을 준다.
이성보다는 감성에 호소하는 영상 덕분인 듯.


WWDC 2010 아이폰4 발표 동영상 (한글자막)

트위터에서 아이폰4 발표 동영상의 한글자막 버전이 올라와서 블로그에 링크함.


#1.


#2.


#3.


#4.


#5.



덧1. 아이폰 3GS를 사지 않고 참았는데, 아이폰4 발표를 보니 급땡긴다. 헐~

덧2. 프리젠테이션 자체만 봐도 S모 기업의 "외계 S" 프리젠테이션과는 비교가 되지 않는다.