Das ist ein Thema, mit dem ich mich nicht nur unter Linux, sondern auch unter Windows und sogar MacOS herumgeärgert habe. Es gibt immer irgendetwas, das nicht angezeigt oder bearbeitet werden kann.
Auf dem Mac waren das die mpeg-2 Videos der Sony Digitalkamera. Unter Windows die HEIF-Fotos des iPhone. Und unter Linux sind es wieder die „nicht freien“ lizensierten Formate. Im speziellen HEIC und HEVC in Form von MP4 Containern von meinem Samsung Smartphone.
Warum HEIF / HEVC und nicht JPG / AVC
Der „alte“ Standard JPG für Bilder / Fotos wird von unzähligen Systemen und Anwendungen direkt unterstützt. Die Bilder können angezeigt und bearbeitet werden.
AVC ist ein Video-Standard, der ebenfalls etwas älter und besser von den Systemen unterstützt wird, hat jedoch ein ähnliches Problem, wie JPG.
Es geht um Speicherplatz. Da wir heute viel mehr Bilder und Videos mit unseren Smartphones erstellen und deren Speicherplatz meist begrenzt ist, braucht es ein hocheffizientes Bild- / Videoformat. HEIF (High Efficiency Image Format) bietet bei gleicher Bildqualität eine ca. doppelt so hohe Kompression und erzeugt damit ca. halb so große Dateien im Vergleich zu JPG. Und bei den Videos sind es immerhin 20 – 40% kleinere Videos bei HEVC, im Vergleich zu AVC.
Wenn das jpg-Bild also 4 MB groß ist, dann ist das heif-Bild nur ca. 2 MB groß. Bei 10 Bildern werden 20 MB gespart. bei 1000 Bildern sind es schon 2000 MB, also fast 2 Gigabyte (GB).
Auf meinem Smartphone befinden sich aktuell ca. 23.495 Bilder. Diese belegen 46,07 GB Speicherplatz. Ich speichere die Bilder im HEIC-Format. Samsung verpasst diesen die Dateiendung *.heic. Würde ich diese als JPG’s speichern, dann würden die Bilder ca. 92 GB an Speicher belegen, also knapp das Doppelte.
Bei den Videos, die mein Smartphone erstellt, gibt es nur die Wahl zwischen Not und Elend. Entweder H.264 (AVC) oder H.265 (HEVC). Ersteres erzeugt größere Dateien, ist dafür aber etwas besser unterstützt. Letzteres kleinere Dateien und leider genauso schlecht unterstützt (zumindest unter Linux), wie H.264.
Eine interessante Webseite ist caniuse.com, die zu HEIF und dessen Nutzung im Web kein gutes Urteil abgibt.
HEIF, HEIC, HEVC
Grundsätzlich sind HEIF und HEVC die ursprünglichen Formate. HEIF als High Efficiency Image File Format für Bilder und HEVC als High Efficiency Video Coding für Videos. Details liefert die Wikipedia
HEIC ist eine Dateiendung, die darstellen soll, dass der Inhalt (das Bild) mit dem HEVC-Format kodiert wurde.
Bilder haben also entweder die Endung *.heif oder *.heic.
HEVC-Videos tragen die Endung *.mp4 oder *.mov (Apple). Das sind Containerformate deren Inhalt mit HEVC (H.265) codiert wurde. Grundsätzlich kann in einem *.mp4 oder *.mov auch ein H.264 oder ein anderer Codec verwendet worden sein. Siehe dazu die Details auf Wikipedia.
Videoformate H.264, H.265 (HEVC)
HEVC entspricht dem MPEG-Standard H.265 und ist der aktuellere und effizientere, im Vergleich zu H.264 (AVC).
Das komplizierte ist, dass es Container gibt (MP4) und darin Inhalt, der in irgendeiner Weise codiert sein kann. Weiter enthalten diese Container nicht nur den Video-Stream sondern noch weitere Elemente, wie Audio, Text, Bilder, oder anderes. Siehe zum Beispiel das MP4-Format auf Wikipedia.
Mein Samsung Smartphone speichert Videos als *.mp4 Container MP4/M4A ab. Als Codec kommt H.265 beim Video und MPEG-4 AAC beim Audio zum Einsatz. Somit ist klar, dass ein nicht freies, lizenziertes, hocheffizientes und recht neues Format zum Einsatz kommt. Es erzeugt kleine Dateien bei bester Qualität. Leider braucht es meist Nachhilfe, damit Betriebssysteme das Format nutzen können.
Fedora und „restricted“ Multimedia-Codecs
Getting HEIF and HEVC to work…
Grundsätzlich wurde aus der libheif, die in Fedora in den Repositories zu finden ist, die Funktionalität entfernt die nicht freien HEIF-Formate HEIC und HEVC anzuzeigen und zu bearbeiten. Dazu braucht es eine andere libheif, die das nachrüstet.
Also braucht es externe Quellen, die sich im RPMFusion Repository finden. Dort finden sich die nötigen Bibliotheken (Libraries) und Tools, um HEIF (HEIC) und HEVC nutzen zu können.
Folgt der Anleitung unter https://rpmfusion.org/
Ich habe dann sicherheitshalber neu gestartet… und danach war die grundlegende Funktionalität gegeben. Wichtig war für mich den Intel-Codec zu installieren, da die Videos sonst nicht flüssig gelaufen sind.
Am Ende benötigt ihr in Fedora 42 die folgenden Pakete:
- libheif.x86_64
- libheif-freeworld.x86_64
- libheif-tools.x86_64
- qt-heif-image-plugin.x86_64 0.3.4-4.fc42 (Damit QT-basierte Programme heif verstehen)
- intel-media-driver.x86_64 (Wenn ihr einen Intel-Prozessor habt). Bei älteren die libva-intel-media-driver.x86_64.
Gnome Preview & HEIC-Dateien
Um heic Dateien in der Gnome Vorschau unter Fedora anzuzeigen, ist eine Ergänzung namens heif-pixbuf-loader zu installieren.
sudo dnf install heif-pixbuf-loader
Bei anderen Distributionen ist es heif-gdk-pixbuf.
Gimp & HEIC-Dateien
Gimp als flatpak kann nicht ohne Weiteres auf die Systembibliotheken zugreifen, um heic-Dateien zu öffnen. Es wäre nötig für flatpak ein „Override“ zu definieren, um auf die libheif(-freeworld) zugreifen zu können. Das hab ich mir gespart, da es einen einfacheren Weg gibt 😉.
Die einfachere Alternative ist… Gimp als RPM-Paket aus den Fedora Quellen zu installieren. Dann funktioniert die Bearbeitung von heic-Dateien einwandfrei. Es muss kein gimp-heif-plugin installiert werden. Dieses ist in den Fedora Quellen auch nicht vorhanden, weil nicht nötig. Gimp greift auf die libheif(-freeworld) zu und nutzt die libheif-tools.
Konvertierung über Nautilus
Wenn doch das JPG-Format benötigt wird, oder ein anderes, dann gibt es ein wunderbares Add-On, mit dem im Nautilus Kontextmenü ein Eintrag hinzugefügt wird, der die ausgewählten Dateien in ein anderes Format konvertiert. Die Details findet ihr auf der Github Seite zum Linux-File-Converter-Addon.
Somit könnt ihr einen kompletten Ordner voller HEIF-Bilder markieren und in einem Rutsch konvertieren, falls ihr dazu nicht auf die Kommandozeile ausweichen wollt, weil ihr eben gerade schon im Dateimanager seid 😉.