Middleware: ejecución de un transcodificador para la transformación de medios

Desde la versión 4.1.0, nuestro Middleware permite procesar cada mutimedia descargada mediante un comando definido por el usuario. Esto permite transformar los archivos descargados para hacerlos compatibles con su sistema.

Por ejemplo, al usar esta función, podrás usar una herramienta como ffmpeg o ImageMagick para transcodificar imágenes, audios y videos.

¿Cómo configurarlo?

Necesitas editar el archivo env.xml desde tu Middleware. Para hacerlo, busca la sección de transcodificadores que se ve así:

 <Nueva clase = "org.eclipse.jetty.plus.jndi.Resource">
<Arg> </Arg>
<Arg> transcodificadores </Arg>
<Arg> <! [CDATA [
]]> </Arg>
</Nuevo>
Si estás actualizando desde una versión anterior, puedes editar el env.xml actual y agregar la sección.
Dentro de los corchetes CDATA, debes agregar cada transformación que deseas realizar, detallando una por línea con el siguiente formato:
 <source_extension>, <destino_extension>, <comando>
dónde
  • source_extension define la extensión del archivo descargado que debe procesarse usando command . Este parámetro no distingue entre mayúsculas y minúsculas.
  • target_extension define la extensión del archivo generado.
  • comando es la ruta completa del comando que se llama para cada archivo descargado que tenga source_extensioncomo extensión de archivo.
    • Este comando
      • recibirá dos argumentos: el archivo entrante y el archivo donde debe escribir la salida ( comando input_file destination_file) .
      • debe devolver un código de estado 0 en caso de éxito o un código diferente de 0 en caso contrario
Por ejemplo, en Linux u OSX, si deseas convertir archivos PNG y GIF a JPG usando la conversión de ImageMagick , puedes agregar lo siguiente:
 <Nueva clase = "org.eclipse.jetty.plus.jndi.Resource">
<Arg> </Arg>
<Arg> transcodificadores </Arg>
<Arg> <! [CDATA [
png, jpg, / usr / bin / convert
gif, jpg, / usr / bin / convert
]]> </Arg>
</Nuevo>

como puedes ver en el ejemplo, debes declarar cada formato de entrada en una línea separada.

Siguiendo el ejemplo de un archivo multimedia descargado, el middleware llamará algo como

 / usr / bin / convert /tmp/media/https/foo/4645d1dc5f523182d5d1a6812071f3c17f974953.png /tmp/media/https/foo/4645d1dc5f523182d5d1a6812071f3c17g_974953.png

¿Cómo funciona?

La conversión ocurre durante el proceso de sincronización de la fuente de datos. Cuando se descargan los datos de una fuente de datos específica, el middleware busca los medios descargados que tengan una de las extensiones declaradas y llama al comando configurado (si no se ha procesado previamente).

Si el comando tiene éxito, el archivo de destino que se pasa como segundo argumento al comando se utilizará como la ruta del archivo multimedia que se escribirá en el campo correspondiente (localMainMediaPath o similar) del archivo o tabla (según su modo de integración).


Troubleshooting

En caso de que la conversión no sea exitosa (por ejemplo: la ejecución falló), el middleware tratará el contenido como si no se hubiera descargado (el campo estará vacío).

Puedes verificar el mensaje de error para comprender mejor lo que está sucediendo:

  • No se pudo encontrar el software configurado:
     código 072:
    No se pudo descargar https://s3-assets0.flowics.com/web/uploads/production/generic-resources/asset/53115/versioned_efb3e1d0211f8dff706ba53ca066e383.png
    debido a: No se puede ejecutar el programa "usr / bin / onvert" (en el directorio "/run/user/1000/middleware/media/https/s3-assets0.flowics.com"):
    error = 2, no existe tal archivo o directorio
  • La conversión falló:
     código 072:
    No se pudo descargar https://s3-assets0.flowics.com/web/uploads/production/generic-resources/asset/53115/versioned_efb3e1d0211f8dff706ba53ca066e383.png
    debido a: error de transcodificación
  • Problema de formato en env.xml:
     Error al cargar la configuración del transcodificador:
     - en la línea 1: el campo está incompleto: 'x'
    Moribundo. Revise su 'env.xml' .



Was this article helpful?