아이폰용 동영상 변환기 v3.9b 업데이트


아이폰 용 동영상 변환기 중 가장 빠르다고 자부하는 VCi를 v3.9b로 업데이트 했다.

업데이트를 하지 않겠다고 선언을 했지만, 그리고, 기능도 거의 완성했다고 생각했지만…
생각할수록 개선 및 수정의 여지가 많아서 틈틈이 손을 댔다. (응?)

여러가지 기능의 개선이 있었지만, 그 중에서도 가장 큰 개선 내용은 재인코딩을 지원하게 수정했다는 것이다.
또한, 파일명에 비 ANSI문자가 포함된 경우에도 정상적으로 변환하도록 수정했다.

01

인터페이스는 불변이나, 첫가끝 한글이 화면에 보여지는 형태는 XP와 W7이 상이함. 이건 순전히 윈도우 탓임.




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

1. 변환을 원하는 파일을 비디오 파일 목록에 떨어뜨린 뒤 변환 버튼을 클릭하면 알아서 변환함
  인식하는 파일 포맷은 AVI, MKV, MP4(mov), OGM, FLV, MPG(mpeg/dat/vob), WMV(asf), SWF

2. raw 비디오 포맷이 mpeg4 또는 H.264인 경우는 정확한 압축 옵션을 확인해서, 재생 가능하면 추출하고,
  재생 불가능한 옵션이거나, 그 이외의 포맷인 경우는 H.264로 다시 인코딩함
  재생 가능 여부는 한땀한땀 확인한 규칙에 따라 확인함
  또한, 사용자 선택시 무조건 H.264로 다시 인코딩할 수 있음

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

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

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

6. 아이폰3/4에서 재생 가능한 비디오인지 확인 여부를 선택하는 드롭다운리스트가 있음
  - 비디오 규격 미확인: mpeg4/H.264는 무조건 추출. 이외의 포맷은 추출하지 않음 (재인코딩 없음)
  - 비디오 규격 확인: mpeg4/H.264 중 한땀한땀 확인한 규칙에 적합한 비디오만 추출 (재인코딩 없음)
  - 비디오 변환: 재생 가능한 비디오는 추출하고, 그 외의 비디오는 H.264로 재인코딩하며, 필요시 리샘플링함
    (지원 프로파일은 slow, fast, very fast, super fast, ultra fast의 5종류임)

7. 플래쉬 비디오(FLV, SWF)도 일반적인 포맷과 같이 처리함
  MKV, AVI 등과 같은 과정으로 처리하며, 필요시 재인코딩도 실시함
  (즉, SWF 비디오를 MP4로 변환할 수 있음)

8. PAR/SAR를 확인하고 수정할 수 있음
  - PAR 유지: PAR를 그대로 사용함
  - PAR=1:1 : PAR를 강제로 1:1로 수정함
  - PAR<1.5(2.0): PAR이 일정 범위 이내면 그대로 사용하고, 범위를 벗어나면 1:1로 수정함 (추천)
  - SAR=3:2 : SAR를 3:2로 강제 설정함. 아이폰에서 무조건 꽉찬 화면으로 재생됨 (화면 왜곡됨)
  - SAR=4:3 : SAR를 4:3으로 강제 설정함. 아이패드에서 무조건 꽉찬 화면으로 재생됨 (화면 왜곡됨)

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

10. 외부 오디오의 파일명이 비디오와 동일하며 뒤에 DELAY 000ms 라는 문자열이 있으면 delay를 적용함
  ex) 비디오: TEST.avi, 오디오: TEST T80 2_0ch 48KHz DELAY 125ms.ac3

11. 내부 오디오가 여러개일 때는 사용할 오디오의 우선순위를 국가코드 및 내부 순서로 지정할 수 있음
  - 언어는 한국어, 영어, 일본어, 독일어, 프랑스어, 러시아어 를 1순위로 선택 가능
  - 순서는 #1 ~ #9 중 하나를 1순위로 선택 가능

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

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

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

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

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

17. 아이폰4 뿐 아니라, 아이폰 3 계열, 아이패드 모두 사용 가능함

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

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

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


2011.2.18: 3.5 업데이트
- 비디오 재인코딩 기능 추가
  재인코딩시 필요하면 리샘플링 하며, 이 때 영상의 크기는 재생가능한 최대크기
- 인식 가능 포맷에 mpeg1/2, WMV, SWF 추가
- 파일명에 비 ANSI 문자(Sebalsbrück.avi)가 있어도 정상처리, 파일명이 첫가끝 문자이면 자동으로 조합
- 내부 오디오 중에서 1순위 언어를 선택하는 것 외에, 1순위 오디오 번호를 지정 가능
- 외부 자막으로 ASS/SSA도 사용 가능 (이전 버전은 내부자막만 인식)
- 비디오/오디오 delay가 음수인 경우도 정상처리 (MP4Box는 음수 delay를 인식하지 않음)
- 변환 전 확장자가 정상인지 확인 (확장자는 avi인데, 실제 포맷은 mkv인 경우 처리하지 않음)
- PAR/SAR를 강제로 지정하거나 제한할 수 있음

2011.2.20: 3.6 업데이트
- 임시파일 유지 기능 추가. 임시파일을 삭제하지 않도록 하며, 이 옵션은 레지스트리에 저장되지 않음

2011.3.6: 3.7 업데이트
- 컴파일러를 Platform SDK 2003.2월 버전으로 교체
- 로그 출력 기능 추가. 바탕화면에 로그 파일(VCi_Log.txt)을 출력하며, 이 옵션은 레지스트리에 저장되지 않음

사용자 삽입 이미지

오류가 발생하면 이 로그를 보내주시기 바랍니다: h (at) zockr.tistory.com


2011.3.9: 3.7a 업데이트
- 각 작업 단계마다 로그 파일에 드라이브의 잔량 표시

2011.3.28: 3.8 업데이트
- 원본 오디오가 AAC 5.1ch일 때 정상적으로 변환하지 못하던 버그 수정
- 내부 프로그램 업데이트: MKV Extract 4.6.0, Media Info 0.7.43, MP4Box 0.4.6 rev2735
- 아이콘 교체(c6238님께 감사드립니다)

2011.4.1: 3.8a 업데이트
- 버그 수정: 재생되지 않는 mp4를 생성하던 치명적인 버그 수정
- DivX에서 생성한 변형 AVI를 정상 변환하도록 수정

2011.4.1: 3.8b 업데이트
- 버그 수정: PAR 지정이 제대로 반영되지 않던 문제 수정
- avi 파일 중 확장자가 avi가 아니라 divx인 경우에도 정상동작하도록 수정
- MP4Box를 0.4.6 rev2125로 회귀. 이후 버전은 PAR 지정이 제대로 반영되지 않는 문제가 있음

2011.4.12: 3.8e 업데이트
- 버그 수정: Windows 7 64비트에서 가끔 다운되던 문제 수정
- 비디오 변환시 강제 Deinterlace 옵션 추가
- 로그 내용 보강
- 임시 폴더 확인을 간결하게 하도록 수정
- 아이콘을 약간 밝게 수정

2011.4.14: 3.8f 업데이트
- 로그 보강: 자막 변환 관련 사항 보강

2011.4.17: 3.8g 업데이트
- 버그 수정: 일부 자막 처리 문제 수정
※ switch-case 문에서 break를 빼먹는 기초적인 문제가 있었음. ㅠ.ㅠ

2011.5.7: 3.9 업데이트
- 재압축이 불필요한 경우에도 강제로 재압축할 수 있는 옵션 추가
- 옵션 창에서 재압축 여부와 H.264 인코딩 프로파일 분리
- 리스트 창을 인코딩 중에도 스크롤할 수 있도록 수정

2011.7.27: 3.9a 업데이트
- 버그 수정: 임시 폴더 지정시 임시폴더에 파일 생성하지 않던 문제 수정(ㅡ.ㅡ;)
- 오디오가 있는데, 없다고 나오는 경우 오디오 강체 추출 기능 추가 (MediaInfo에 약간의 문제가 있는 듯 ㅠ.ㅠ)
- 추출된 오디오가 4GB를 넘는 경우에도 정상적으로 처리하도록 수정
- SAMI 자막 변환시 40ms의 시간간격을 주던 부분 제거
- 비디오 프로파일에 hTC 인크레더블 S 추가
- MediaInfo를 0.7.47로, MKVExtract를 4.6.0으로 업데이트
※ 현시점에서 FFMpeg의 최신 버전은 0.8('11.6.27)이나, 종종 변환에 실패하는 경우가 있어 안정적인 r26400('11.1.18)를 사용함

2011.7.29: 3.9b 업데이트
- 버그 수정: 오디오 다운믹스 버그 수정