4 votos

Crear mis propios archivos HEIF/HEIC

He estado buscando por un tiempo una manera de empezar a empaquetar bytestreams de imágenes en archivos HEIF, ya que MacOS High Sierra y iOS 11 están ahora fuera. No he tenido mucha suerte, solo un gran número de personas convirtiendo archivos .heic a .jpg, y el visor JS de Nokia en GitHub.

Para empezar, no quiero convertir toda mi fototeca en archivos .heic codificados con HEVC, ya que los beneficios son menores porque ya están codificados en jpeg y han perdido calidad con respecto al original. Así que esta pregunta no es un duplicado de la " Convertir toda la biblioteca al nuevo formato .HEIC Pregunta "

Mi objetivo:

  • Tomar un bytestream mpeg y un bytestream PNG o JPG y empaquetarlos en un archivo .heic

  • Tomar múltiples bytestreams PNG y/o JPG y hacer un archivo .heic con ellos (como una serie de fotos en ráfaga)

HEIF es sólo un contenedor, por lo que aunque fue diseñado para el uso de HEVC, admite otros tipos de datos como jpg, png, prácticamente cualquier cosa que las aplicaciones de visualización admitan en sus formatos de archivo nativos.

No he podido encontrar ningún software que me permita hacerlo. Todo lo que busco para hacer con HEIF o HEIC en el término sólo me bombea con los titulares de noticias de tecnología acerca de Apple tratando de reemplazar jpeg, y la gente la conversión de sus archivos .heic una vez que su importado desde su ordenador (que parece que tomaría esfuerzo para hacer desde iOS por defecto convertirlos para usted si usted trata de importarlos o compartirlos en cualquier lugar que no puede confirmar explícitamente el extremo de llegar los apoya ...)

Así que espero que alguien de aquí sepa una o dos cosas y pueda indicarme la dirección correcta al menos.

No estoy en contra de las herramientas de línea de comandos, o incluso de hacer algo de desarrollo por mí mismo si puedo obtener una biblioteca que pueda importar en una aplicación Swift (soy un tardío en la programación, y aunque podría decir lo mismo de Javascript, si fuera a construir una aplicación alrededor de una biblioteca para hacer este trabajo, preferiría usar Swift que usar un lenguaje de scripting)

¡Así que espero que alguien haya pensado lo mismo y haya tenido más suerte que yo para encontrar esto! :)

Edición 1, 10 de noviembre:

He encontrado un sitio de un tipo llamado Ben Gotow que habla de convertir JPEGs existentes en flujos de bits HEVC, y luego ponerlos en un contenedor .heic o .heif. Está cerca, pero no había podido encontrar muchos detalles para hacer más que eso. No estoy añadiendo esto como una respuesta, sólo como una edición, ya que es relevante, pero en realidad no logra mi objetivo.
jpgtoheif.com

3voto

Matthew Briggs Puntos 51

Este uso de GPAC puede acercarse a los objetivos que desea:

¿Qué es el GPAC?

GPAC es un marco multimedia de código abierto. GPAC se utiliza con fines académicos y de investigación, y más allá a través de colaboraciones industriales. El proyecto abarca diferentes aspectos de los multimedios, centrándose en las tecnologías de presentación (gráficos, animación e interactividad) y en los formatos de empaquetado de multimedios, como el MP4.

Más detalles:

Un poco más de investigación y una respuesta aquí ¡proporciona el camino! Necesitamos varias cosas instaladas, idealmente con homebrew:

  • x265 y GPAC brew install x265 gpac

  • FFmpeg con soporte para x265

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

Referencia

Ahora que tienes las herramientas, prueba un script como este para convertir las imágenes de una carpeta a HEIF/HEIC:

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;

Lo he probado con una carpeta de imágenes y funciona. Convierte las imágenes con dimensiones impares en pares, por ejemplo, pero aparte de algunas advertencias funciona.

3voto

JakeGould Puntos 1926

Instale ImageMagick y utilice la versión básica covert para pasar de un formato a otro.

Sé que este es un hilo viejo, pero poner mis dos centavos que en 2020 es mucho más fácil para convertir a granel las imágenes a HEIC hoy en día de lo que era en el pasado.

El primer paso es conseguir ImageMagick y ExifTool instalados vía Homebrew así:

brew install imagemagick exiftool

Una vez instalado ImageMagick, convertir a HEIC es tan sencillo como esto:

convert image.jpg image.heic

Eso es todo. ImageMagick convierte los archivos de un formato a otro basándose en la extensión del archivo de destino. Y todos los metadatos del archivo de origen se transfieren limpiamente del archivo antiguo al nuevo usando ExifTool después de la conversión de la imagen.

Así que en este ejemplo sólo hay que nombrar el archivo de destino image.heic es suficiente para obtener un archivo HEIC generado a partir del archivo fuente image.jpg .

Pero como tenía que convertir en masa algunos directorios llenos de imágenes, escribí este sencillo Bash script que busca en un directorio imágenes JPG, PNG y TIFF y luego las pasa por ImageMagick y guarda un archivo HEIC con el mismo nombre de archivo en el mismo directorio.

Simplemente tome este script y cambie /path/to/images para que coincida con el directorio de origen y ya está todo listo.

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X