Conversión de audio y vídeo con Liferay + Xuggle

05-12-2013
 

Liferay dispone de la funcionalidad de convertir entre diferentes formatos a MP4 o OGV. Se trata de una funcionalidad out-of-the-box muy útil, por ejemplo, para convertir entre formatos de vídeo FLV a MP4.

Liferay screenshot

Para conseguir esto Liferay hace uso de la librería Xuggle. Esta librería nos permite codificar y decodificar fácilmente audio y vídeo. Un ejemplo de conversión de vídeo entre los formatos MPG y FLV seria el siguiente:

IMediaReader reader = ToolFactory.makeReader("input.mpg");
reader.addListener(ToolFactory.makeViewer(true));
reader.addListener(ToolFactory.makeWriter("output.flv", reader));
while (reader.readPacket() == null)

Pero para poder usarlo directamente en Liferay solo tenemos que activarlo de la siguiente manera: Vamos al ‘Panel de control’ → ‘Administración del servidor’ → ‘Servicios Externos’ aquí podemos habilitar ImageMagick, la integración con OpenOffice y nos podremos descargar he instalar Xuggler (Una vez descargado requiere reiniciar el servidor).

A partir de este momento podemos subir cualquier vídeo a la gestión de documentos y multimedia, además de que nos aparecerá una previsualización del vídeo, añadiendo estos parámetros ‘&videoPreview=1&type=ogv’ a la URL de descarga del documento nos lo convertirá al formato que queramos. Por ejemplo:

http://localhost:8080/documents/10180/0/mivideo.flv/2362094b-e7d8-4b92-8a11-6150d89bab59? version=1.0&videoPreview=1&type=ogv

Esto nos puede venir de lujo para insertar diferentes tipos de vídeos en Liferay pero todavía no es suficiente(Entiendo yo) para hacer Video Streaming en Java+Liferay.

Comments

3 Responses to “Conversión de audio y vídeo con Liferay + Xuggle”
  1. Juan G. says:

    Hola Albert,

    gracias por el artículo, la verdad que la funcionalidad de vídeo es algo que no mucha gente conoce.

    De todos modos quería puntualizar un par de cosillas del artículo:

    * No es cierto que Liferay nos convertirá el video al formato que queramos. Actualmente sólo es posible convertir a mp4 y ogv, ya que teniendo estos dos formatos abarcamos todos los navegadores que disponen de video HTML5, incluso para aquellos que no disponen de ello y se usa el reproductor flash de AUI. Esto está en la propiedad “dl.file.entry.preview.video.containers”.
    * Liferay sí que dispone de streaming web de vídeos. Mediante el uso del estándar de cabeceras HTTP para contenidos parciales y de rangos será posible poder reproducirse sin tener que descargar el fichero (esto es posible después de un procesamiento de los videos que también permite ajustar su calidad y el poder reproducirse en dispositivos Iphone/Ipad). De esta forma, el navegador sólo pedirá el fragmento del vídeo necesario, lo que ahorra que bastante información innecesaria tenga que viajar por la red y ser enviada por el servidor.

    Por cierto, desde la versión 6.2 es posible añadir estos vídeos y ficheros de audio a cualquier contenido web desde el CKEditor, con las ventajas que he comentado anteriormente.

  2. Hola Juan,

    Primero de todo muchas gracias por el apunte, muy acertado. Tienes toda la razón del mundo, a veces me flipo un poco con ciertas cosas que me gustan. Acabo de editar el post para especificar un poco mas.

    De todas maneras ayer hice pruebas y hoy otra vez y a mi me ha convertido perfectamente de AVI, FLV, MPG, OGV a MP4 y OGV. Los formatos de salida se limitan a dos, acepta bastantes mas de entrada(Aunque tampoco es que haya hecho un estudio muy apurado). Creo que no es moco de pavo, a mi me hubiera venido muy bien hace unos años cuando tuve que hacer unos cuantos scripts para que los usuarios pudieran convertir formatos. Tampoco he probado como convierte, resoluciones, calidad de sonido, etc. eso lo dejo para mas adelante.

    El post de streaming de vídeo es de 2009, ahora con la llegada de HTML5 y toda la irrupción de los dispositivos móviles va a cambiar mucho el tema y liferay vendrá de lujo para ello. Pero de momento si quieres hacer streaming con compatibilidad para navegadores un poco antiguos te toca convertir el vídeo a FLV, añadirle las marcas de tiempo y servir tu mismo el vídeo, por ejemplo, mediante un servlet.

    Por cierto, a ver si tenemos mas ocasión de hablar en el próximo symposium o por la comunidad LSUG. Un abrazo.

    Saludos,

  3. Juan G. says:

    Hola Albert,

    perdona, cuando me refería a los dos formatos, me refería a los dos formatos de salida. Por supuesto que de ficheros de entrada te convierte prácticamente todos, dentro de la funcionalidad de Liferay. Por supuesto que esto puede cambiarse haciendo un desarrollo propio.

    Respecto a lo que indicas de los navegadores antiguos, desde la version Flash player 9 update 3 soporta MP4 con H264, por lo que no sería necesario transformar a FLV en ese caso. Efectivamente, las cabeceras HTTP para rango de datos no aplican en el caso de usar navegadores no compatibles con video HTML5, por lo que habría que implementarlo, tal y como has comentado.

    Un saludo!

Leave a Reply

© Albert Coronado Calzada