Vì sao ảnh HEIC từ iPhone không mở được trên Linux?
Nếu bạn đang dùng Linux (Ubuntu, Kubuntu, Mint…) và cố gắng mở hoặc convert ảnh HEIC chụp từ iPhone – đặc biệt iPhone 14/15/16 – rất có thể bạn đã gặp lỗi:
Could not read HEIF/AVIF file: Invalid input: Too many auxiliary image references
hoặc:
moov atom not found
Invalid data found when processing input
Các tool phổ biến như:
heif-convertImageMagickffmpeggthumbshotwell
đều không xử lý được ảnh.
Bài viết này sẽ giải thích vì sao, và hướng dẫn cách khắc phục dứt điểm bằng Docker.
HEIC của iPhone đã thay đổi – Linux thì chưa
iPhone từ thế hệ 2023–2025 không còn tạo HEIC “đơn giản” nữa.
Ảnh HEIC mới của Apple thường chứa:
- HDR Gain Map
- Tone-mapping auxiliary images (
tmap) - Deep Fusion multi-frame
- Depth map
- Image pyramid (nhiều độ phân giải)
Chỉ cần chạy heif-info, bạn sẽ thấy:
MIME type: image/heic
main brand: heic
compatible brands: mif1, MiHB, MiHE, MiPr, miaf, heic, tmap
Trong đó:
MiHB,MiHE→ HDR gain-map HEICtmap→ tone mapping imageMiPr→ multi-resolution preview
➡️ Đây là những chuẩn chỉ iPhone mới dùng, và libheif stable (≤ 1.17.x) chưa hỗ trợ đủ.
Vì sao libheif 1.17.6 vẫn không đọc được?
Rất nhiều người tìm cách cập nhật libheif lên 1.17.6 – bản stable mới nhất, nhưng:
👉 libheif 1.17.6 không hỗ trợ fully HDR Gain Map HEIC hoặc tmap của Apple.
👉 Những tính năng này chỉ có trong libheif nhánh master (development).
Do đó, mọi tool dựa trên libheif (kể cả ffmpeg, convert…) đều lỗi.
Các lỗi thường gặp:
| Lỗi | Nguyên nhân |
|---|---|
Too many auxiliary image references |
Ảnh có nhiều frame phụ, libheif không hiểu cấu trúc Apple HEIC |
moov atom not found |
ffmpeg nhầm file HEIC mới là MP4 |
Invalid data found when processing input |
Parser của libheif stable không parse được gain-map |
libheif master – giải pháp duy nhất hiện tại
Team libheif đã thêm hỗ trợ cho Apple HDR/gain-map/tmap vào nhánh master, nhưng chưa release thành phiên bản stable.
Điều đó có nghĩa là:
- Không distro Linux nào (Ubuntu, Fedora, Arch…) có bản mới này trong repo.
- Không apt install nào có thể sửa lỗi.
- Không snap/flatpak nào xử lý được.
👉 Giải pháp đúng nhất là build libheif từ source (master).
Để đơn giản, chúng ta dùng Docker.
Dockerfile – Môi trường libheif master chạy được mọi HEIC từ iPhone
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
build-essential cmake pkg-config git \
libde265-dev libx265-dev libaom-dev libdav1d-dev libjpeg-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /tmp
RUN git clone https://github.com/strukturag/libheif.git \
&& cd libheif \
&& mkdir build && cd build \
&& cmake .. \
&& make -j$(nproc) \
&& make install \
&& ldconfig
WORKDIR /work
CMD ["/bin/bash"]
Build image
docker build -t heic-master .
Convert HEIC → JPG
docker run --rm -v "$PWD":/work heic-master heif-convert input.heic output.jpg
🎉 Mọi ảnh HEIC từ iPhone mới sẽ convert thành công.
Khi nào cần libheif master?
| Loại HEIC | libheif 1.17.x | libheif master |
|---|---|---|
| HEIC iPhone 2017–2022 | ✔ | ✔ |
| Deep Fusion HEIC | ❌ | ✔ |
| HDR Gain Map HEIC | ❌ | ✔ |
MiHB, MiHE, MiPr, tmap |
❌ | ✔ |
| iPhone 14/15/16 HEIC | ❌ | ✔ |
Nếu bạn thấy các brand này trong heif-info, bạn bắt buộc phải dùng bản master.
Lời kết
Việc iPhone liên tục mở rộng chuẩn HEIC với HDR, gain-map, multi-frame… khiến các thư viện xử lý ảnh trên Linux khó bắt kịp. Đến thời điểm cuối 2025:
- libheif stable (1.17.x) không thể đọc HEIC Apple đời mới
- ffmpeg cũng không giúp được vì dùng libheif cũ
- Giải pháp duy nhất: dùng libheif master
Sử dụng Docker như trên là cách ổn định nhất, không gây xung đột thư viện, và chạy được 100% ảnh từ iPhone 14/15/16.