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-convert
  • ImageMagick
  • ffmpeg
  • gthumb
  • shotwell

đề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 HEIC
  • tmap → tone mapping image
  • MiPr → 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.