이전 포스트에서 설명했듯이, 지금까지 공개된 윈도우용 HEIF 변환 프로그램[각주:1]들은 뭔가 많이 부족하다.
mp4box와 ffmpeg만 잘 활용해도 변환의 상당부분을 처리할 수 있는 걸 보면 아직 상용 프로그램들의 갈 길은 먼 것 같다.
그래서 답답한 내가 직접 만들어봤다.
이 프로그램은 HEIF을 읽어서 정보들을 추출한 뒤에 mp4box와 ffmpeg을 활용해서 변환하는 프로그램이다.
색상 프로파일, Exif 등을 모두 제대로 읽어내어 살리며, 덤으로 파일의 시간 정보도 Exif에 기록된 시간을 사용한다.
혹시 타일 방식이 아니라 Ani GIF처럼 여러 장의 이미지가 들어있는 경우는 각각의 이미지 파일로 추출해준다.
또한, jpeg으로 저장할 때는 quality를 지정할 수 있다. 좀 더 작은 크기의 파일을 만들 수 있도록 mozjpeg도 적용할 수 있다.[각주:2]
무손실 이미지로 저장할 수 있도록 PNG로 저장할 수도 있는데, 이 경우에도 색상 프로파일과 함께 Exif를 함께 저장한다.
이 프로그램은 아래 링크에서 다운받을 수 있다.
이전의 다른 프로그램들과 동일한 압축 비밀번호가 걸려있다.
password: teus.me
덧1. 변환 중간 과정에서 BMP를 사용하는데, 이건 성능을 조금이라도 끌어올리기 위한 수단임
이 프로그램은 다양한 부가기능들을 추가했지만, 어쨌거나 본질적으로는 프론트엔드인지라 성능은 본체[각주:3]의 영향을 많이 받는다.
초기 버전은 변환 과정에서 PNG로 추출했다가 합쳤는데, BMP로 추출해보니 변환 시간이 20% 가량 빨라졌다.
혹시나 해서 PCX로 추출하는 방법도 적용해봤는데, 오히려 BMP로 추출할 때보다 다소 느려졌다.
덧2. ffmpeg은 32비트 및 64비트 버전을 모두 사용 가능함
ffmpeg 64비트로 변환해보니 32비트 버전에 비해 또 15% 가량 더 빨라졌다.
그래서, 두 버전을 모두 사용할 수 있도록 해서, 64비트 환경에선 ffmpeg 64비트를 사용하도록 했다.
덧3. 임시 폴더명이 순수한 영어가 아닌 경우는 별도의 임시 폴더를 지정해야 함
mp4box는 실행 폴더명에 한글 등 CJK 문자가 들어있으면 종종 실행이 중단되기 때문에 궁여지책으로 선택한 해결책이다.
덧4. 만약을 대비해서 UI는 영어로만 구성했음. 어느 나라의 누구라도 잘 쓸 수 있도록
덧5. iOS에서 생성한 파일 외에 노키아에서 공개한 HEIF까지도 완전하게 변환함
이 파일들 중에는 HEVC 외에 H.264 기반의 HEIF도 포함되어 있으며 모두 변환한다.
참고로, 여기 올라온 46개의 파일들 중에 33개만 변환이 가능하다. 나머지는 파일 자체에 문제가 있는 파일이다.
2017.12.10: v1.1
- 최초 공개 버전
2017.12.17: v1.2
- resample 기능 추가
- 오류 수정: iOS에서 파노라마 이미지를 잘못 처리하던 오류 수정
- 멀티코어 및 SSE2를 지원하여 동작 속도를 비약적으로 향상
- 파일/폴더 탐색 버튼 추가
- ffmpeg을 3.4.1로 변경
- mp4box를 0.7.2-rev-356으로 변경
- jpeg의 기본 quality를 95로 변경
2017.12.19: v1.2a
- mp4box를 0.7.2-rev-357로 변경
- ffmpeg x64 위치 조정
2017.12.20: v1.3
- 윈도우 7에서도 정상적으로 동작하도록 수정
- UI 반응성 향상
2017.12.25: v1.4
- 메시지 박스 위치 조정
- mozjpeg을 1.5.3으로 교체
- Donate 버튼 크기 축소
2018.1.30: v1.5
- 오류 수정: exif 처리시 가끔 프로그램이 죽는 문제 해결
- mp4box를 0.7.2-rev-376으로 변경
- 임시 폴더에 한글이 들어있어도 정상 처리하도록 수정
2018.2.20: v1.6
- mp4box를 0.7.2-rev419로 업데이트
- 썸네일과 더불어 깊이 정보가 추가된 경우도 정상적으로 변환하도록 수정[각주:4]
- DXVA2가 지원되는 경우 DXVA2로 디코딩하도록 수정[각주:5]
- 메시지 박스 위치 조정
2018.3.11: v1.9
- mp4box를 0.7.2-rev436으로 업데이트- ffmpeg을 3.4.2로 업데이트
- libpng를 1.6.35beta02로 업데이트
- jpeg 저장 속도 약 2배 향상 (mozjpeg 대신 libjpeg-turbo 적용)
- 오류 수정: 임시 폴더를 루트 폴더로 지정해도 오류가 발생하지 않도록 수정
- PNG 저장 시에도 원본에 저장된 EXIF 필드를 저장하도록 수정
- 파일/폴더 모드 토글 스위치 등 UI 개선
- rar에서 7zip으로 압축 포맷 변경[각주:6]
아이폰 용량 관리 꼼수 하나 소개 (0) | 2018.11.12 |
---|---|
iOS 12에서 차단 암호 찾는 법 (0) | 2018.11.03 |
HEIF 파일 변환? 그게 왜 어렵지? (1) | 2017.12.09 |
iOS에서 HEVC의 사용에 대한 소고 (1) | 2017.11.12 |
H.264 vs HEVC 변환 2차 추가시험 결과 (5) | 2017.10.15 |