레이블이 변환인 게시물을 표시합니다. 모든 게시물 표시
레이블이 변환인 게시물을 표시합니다. 모든 게시물 표시

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월 5일 일요일

TS/MTS → MKV 한방에 변환하기

많이 보던 인터페이스. VCi를 최대한 재활용했음.


파일 형식 중에 .ts(또는 .mts)라는 형식이 있다. (Transport Stream)
잡음이 많은 환경을 고려해서 설계된 컨테이너 포맷이다.

온라인 방송에서도 널리 쓰이고, DSLR에서도 가끔 쓰이는 포맷인데, 일반 PC에서 쓰기엔 사소한 문제가 있다.
오류를 방지하기 위해 내부적으로 계속 시간 코드를 삽입해놓았는데, 문제는 파일을 잘라붙여 편집한 경우, 이 시간 코드가 따라다닐 때가 있다는 것이다.
예컨데, 30분짜리 .ts 동영상이 있는데, 여기서 10분~20분의 10분 분량을 잘라낸다고 하자.

가운데 빨간색 영역을 잘라내면…


그러면, 새롭게 생성되는 .ts 파일은 20분짜리가 된다. (30-10 = 20)
그런데, 막상 새롭게 생성되는 .ts 파일을 재생해보면 20분짜리가 아니라 30분짜리라는 정보가 나온다.
그리고, 재생을 해보면 10분~20분이라는 영역은 없다고 나온다.

이런 식으로 나온다. 편집 도구 좀 잘 만드시지… 쩝


이런 문제(?)를 간편하게 해결하기 위해 .ts 파일을 재압축 없이 .mkv 파일로 변환해주는 툴을 하나 만들었다.
(이하 본 프로그램은 TS2MKV로 부름)

이 프로그램의 기능은 별 거 없다. mplayer를 이용해서 ts의 비디오/오디오 raw data를 추출하고 다시 합치는 것.
그리고, 이 과정에서 A/V 딜레이 정보를 확인해서 맞춰주는 것 뿐이다.

예컨데, 아래와 같이, 56분 29초짜리라고 정보가 표시되는 .ts 파일을…


TS2MKV로 변환하면 아래와 같이 16분 1초라고 정상적으로 표시된다.
또한, 아직까지는 .ts 재생필터에 비해 .mkv의 재생필터가 더 빠릿빠릿하게 동작한다는 장점도 얻을 수 있다.


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



덧1. 이 프로그램을 만들면서 이해가 되지 않는 상황을 하나 발견했다.
H.264의 raw 데이터에 mkv/mp4 컨테이너를 씌우면 2배 느리게 재생되는 현상이 종종 발생했다.
즉, 30fps라면 강제로 60fps로 지정해야 정상재생이 되는 것이다.

그런 현상이 발생하지 않을 때도 있어 정확한 원인은 찾지 못했고, FPS에 관련된 옵션을 추가했다.
 - FPS 2배로 늘이기: FPS를 2배로 늘임. 즉, 2배 빠르게 재생됨.
 - FPS를 지능적으로 보정: 생성된 mkv 파일과 별도로 프레임 수를 강제로 조정한 mkv 파일을 하나 더 생성함.

참고로, 일부 문제 있는 파일을 DGAVCIndex로 읽어보면 정상적인 정보가 나온다. 어쩔…

덧2. 이 프로그램은 카라 팬인 친구가 카라 동영상 관련 부탁을 해서 만든 것이다.
그래서, 이 프로그램의 아이콘은 카라다. ㅋㅋㅋ

덧3. 친구야! 술 사라! 공짜가 젤 비싸다. ㅋㅋㅋ


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월 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 영화 [위기일발]이다.
예전에 리뷰 쓰면서 립해둔 것을 지우지 않고 재활용했다. 물론, 개인 용도로 쓸 뿐 재배포는 결코 하지 않는다.