Eigene HEIF/HEIC-Dateien erstellen

Ich habe mich schon eine Weile nach einer Möglichkeit umgesehen, Bild-Bytestreams in HEIF-Dateien zu packen, da macOS High Sierra und iOS 11 jetzt draußen sind. Hatte nicht viel Glück, nur eine große Anzahl von Leuten konvertierte .heic-Dateien in .jpg und den Nokia JS-Viewer auf GitHub

Zunächst möchte ich meine vorhandene Fotobibliothek nicht vollständig in HEVC-codierte .heic-Dateien konvertieren. Dort sind abnehmende Renditen zu erzielen, da sie bereits jpeg sind und gegenüber dem Original Qualitätsverluste aufweisen. Diese Frage ist also kein Duplikat der Frage „ Gesamte Bibliothek in neues .HEIC-Format konvertieren “.

Mein Ziel:

  • Nehmen Sie sowohl einen MPEG-Bytestream als auch einen PNG- oder JPG-Bytestream und packen Sie sie in eine .heic-Datei

  • Nehmen Sie mehrere PNG- und/oder JPG-Bytestreams und erstellen Sie daraus eine .heic-Datei (wie eine Burst-Serie von Fotos).

HEIF ist nur ein Container. Obwohl es für die Verwendung mit HEVC entwickelt wurde, unterstützt es andere Datentypen wie jpg, png, so ziemlich alles, was die Anzeigeanwendungen in ihren nativen Dateiformaten unterstützen.

Ich habe einfach keine Software gefunden, mit der ich das machen kann. Alles, was ich im Zusammenhang mit HEIF oder HEIC suche, pumpt mich nur mit technischen Schlagzeilen über Apple, die versuchen, jpeg zu ersetzen, und über Leute, die ihre .heic-Dateien konvertieren, sobald sie von ihrem Computer importiert wurden (was anscheinend Mühe kosten würde). da iOS sie standardmäßig für Sie konvertiert, wenn Sie versuchen, sie zu importieren oder irgendwo zu teilen, kann es nicht ausdrücklich bestätigen, dass das erreichende Ende sie unterstützt ...)

Ich hoffe also, dass hier jemand etwas weiß und mich zumindest in die richtige Richtung weisen kann.

Ich bin Befehlszeilen-Tools nicht abgeneigt oder entwickle selbst etwas, wenn ich auf eine Bibliothek verwiesen werde, die ich in eine Swift-Anwendung importieren kann (ich bin ein Spätzünder in der Programmierung, und obwohl ich dasselbe für Javascript sagen könnte , wenn ich für diese Arbeit eine App um eine Bibliothek herum erstellen würde, würde ich viel lieber Swift verwenden als eine Skriptsprache)

Hoffentlich hat jemand dasselbe gedacht und mehr Glück gehabt als ich, als ich das gefunden habe! :)

Bearbeiten 1, 10. November:

Ich habe eine Website von einem Typen namens Ben Gotow gefunden, der davon spricht, vorhandene JPEGs in HEVC-Bitstreams zu konvertieren und sie dann in einen .heic- oder .heif-Container zu packen. Es ist knapp, aber er hatte nicht viele Details finden können, um mehr als das zu tun. Ich füge dies nicht als Antwort hinzu, sondern nur als Bearbeitung, da es relevant ist, aber mein Ziel nicht wirklich erreicht. Ich hoffe, dass jemand, der diese Frage findet, seine Website nützlich finden wird!
jpgtoheif.com

Es scheint sehr schwierig zu sein, die Antwort auf das "Erstellen" dieser Dateien selbst zu finden, da es schwierig ist, selbst eine Viewer-App für HEIC zu finden , nicht einmal über das Erstellen / Bearbeiten ...
Ja, das ist meine Sorge ... Trotzdem, zumindest wenn ich die Frage stelle, werden hoffentlich nach und nach andere Leute diese Frage finden und vielleicht sogar beitragen, was sie gefunden haben. Für sie ist alles, was ich finden kann, egal, was ich suche, „Wie konvertiere ich HEIC/HEIF in JPEG“-Beiträge. Und eine Website, auf der es darum geht, JPEGs und Videos in HEVC zu konvertieren und sie in einen HEIF-Container zu legen (ich werde das gleich als Bearbeitung zur ursprünglichen Frage hinzufügen, da es sowieso ein paar relevante Daten enthält :)

Antworten (2)

Diese Verwendung von GPAC kann Ihren gewünschten Zielen näher kommen:

Was ist GPAC?

GPAC ist ein Open-Source-Multimedia-Framework. GPAC wird für Forschungs- und akademische Zwecke und darüber hinaus durch industrielle Kooperationen verwendet! Das Projekt deckt verschiedene Aspekte von Multimedia ab, wobei der Schwerpunkt auf Präsentationstechnologien (Grafik, Animation und Interaktivität) und auf Multimedia-Verpackungsformaten wie MP4 liegt.

Mehr Details:

Ein wenig mehr Forschung und eine Antwort hier bietet den Weg! Wir brauchen mehrere Dinge installiert, idealerweise mit Homebrew:

  • x265 und GPACbrew install x265 gpac

  • FFmpeg mit x265-Unterstützung

    brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-libass --with-libquvi --with-libvorbis --with-libvpx --with-opus --with-x265
    

Referenz

Nachdem Sie nun über die Tools verfügen, versuchen Sie ein Skript wie dieses, um Bilder in einem Ordner in HEIF/HEIC zu konvertieren:

for F in *.jpg *.png *.tif *.tiff; \
  do ffmpeg -i "$F" -crf 23 -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -preset slower -pix_fmt yuv420p -f hevc "${F%.*}.hvc" && \
     MP4Box -add-image "${F%.*}.hvc" -ab heic -new "${F%.*}.heic" && \
     rm "${F%.*}.hvc";
  done;

Ich habe es mit einem Ordner mit Bildern versucht und es funktioniert. Es wandelt beispielsweise Bilder mit ungeraden Abmessungen in gerade Abmessungen um, aber abgesehen von einigen Einschränkungen funktioniert es.

Ich werde jetzt viel lesen, wie es aussieht! Wenn es das bekommen kann, wonach ich suche, bin ich wieder hier und bearbeite das, was ich am Ende Ihrer Antwort finde, für alle anderen, die möglicherweise dasselbe wollen, und markiere es als akzeptiert, es sei denn, jemand anderes kommt vorbei mit einer besseren antwort :)
Nein, das beantwortet nicht, dass Sie mehrere PNG- und/oder JPG-Bytestreams nehmen und daraus eine .heic-Datei erstellen (wie eine Burst-Serie von Fotos) - aber ich vermute, dass es nur erforderlich ist, etwas mehr GPAC zu lernen. Es scheint ziemlich vielseitig zu sein!
Interessanterweise sind Sie nicht auf JPEG-, PNG- und TIFF-Bilder beschränkt. FFmpeg unterstützt andere Bildformate. JPEG2000 funktionierte zum Beispiel im Test sofort.

Installieren Sie ImageMagick und verwenden Sie das Basisformat convert, um von einem Format zum anderen zu wechseln.

Ich weiß, dass dies ein alter Thread ist, aber ich poste meine zwei Cent, dass es im Jahr 2020 viel einfacher ist, Bilder in HEIC zu konvertieren, als es in der Vergangenheit der Fall war.

Der erste Schritt besteht darin, ImageMagick und ExifTool wie folgt über Homebrew zu installieren :

brew install imagemagick exiftool

Sobald Sie ImageMagick installiert haben, ist die Konvertierung in HEIC so einfach:

convert image.jpg image.heic

Das ist es! ImageMagick konvertiert Dateien basierend auf der Dateierweiterung der Zieldatei von einem Format in ein anderes. Und alle Metadaten aus der Quelldatei werden mithilfe von ExifTool sauber von der alten Datei in die neue Datei übertragen , nachdem die Bildkonvertierung stattgefunden hat.

In diesem Beispiel reicht es also aus, nur die Zieldatei zu benennen, image.heicum eine HEIC-Datei zu erhalten, die aus der Quelldatei generiert wird image.jpg.

Aber da ich einige mit Bildern gefüllte Verzeichnisse massenweise konvertieren musste, habe ich dieses einfache Bash-Skript geschrieben, das ein Verzeichnis nach JPG-, PNG- und TIFF-Bildern durchsucht und sie dann durch ImageMagick führt und eine HEIC-Datei mit demselben Dateinamen im selben Verzeichnis speichert.

Nehmen Sie einfach dieses Skript und passen Sie es /path/to/imagesan Ihr Quellverzeichnis an, und schon sind Sie fertig!

find -E '/path/to/images' -type f -iregex '.*\.(JPG|JPEG|PNG|TIF|TIFF)$' |\
  while read full_image_path
  do
    path_sans_extension="${full_image_path%.*}"
    convert "${full_image_path}" "${path_sans_extension}".heic
    exiftool -overwrite_original_in_place -tagsFromFile "${full_image_path}" "${path_sans_extension}".heic
  done