FFmpeg es una colección de software libre capaz de decodificar, codificar, transcodificar, mux, demux, transmitir, filtrar y reproducir prácticamente cualquier cosa que los humanos y las máquinas hayan creado. Admite formatos antiguos así como los más actuales. También es altamente portátil y multiplataforma (Linux, Mac OS X, Microsoft Windows, los BSD, Solaris, etc.).
FFmpeg se ejecuta mediante linea de comandos, pero existen varias librerías que integran las tools de ffmpeg con varios lenguajes de programación. En este post conoceremos una de ellas, FFmpeg Java desarrollado por Andrew Brampton, que como su nombre indica, nos permite ejecutar FFmpeg desde Java. El proyecto se encuentra bajo licencia BSD y su dirección en GitHub es ffmpeg-cli-wrapper.
Para conocer más sobre FFmpeg y sobre las herramientas y comandos de este, puede visitar la documentación oficial en https://www.ffmpeg.org/documentation.html
Para el ejemplo de este post, utilizaremos un archivo GIF animado del personaje de «La Mascara», como se puede ver en la imagen inferior, este tiene un peso de 379KB.
Maven:
<dependency> <groupId>net.bramp.ffmpeg</groupId> <artifactId>ffmpeg</artifactId> <version>0.6.2</version> </dependency>
Ahora con un proyecto Java abierto, y claro con la librería «FFmpeg Java» agregada al mismo, utilizaremos el siguiente código para realizar la conversión de gif a webm.
import java.io.IOException; import net.bramp.ffmpeg.FFmpeg; import net.bramp.ffmpeg.FFmpegExecutor; import net.bramp.ffmpeg.FFprobe; import net.bramp.ffmpeg.builder.FFmpegBuilder; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { try { FFmpeg ffmpeg = new FFmpeg("path/to/ffmpeg"); FFprobe ffprobe = new FFprobe("path/to/ffprobe"); FFmpegBuilder builder = new FFmpegBuilder() .setInput("mask.gif") // Archivo origen .overrideOutputFiles(true) // Sobreescribe archivo si ya existe .addOutput("mask.webm") // nombre de archivo destino .setFormat("webm") .setVideoCodec("vp9") // codec .setVideoFrameRate(24, 1) // 24 frames por segundo .done(); FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe); executor.createJob(builder).run(); System.out.println("fin"); } catch (IOException ex) { System.err.println(ex.getMessage()); } } }
Donde en «path/to/ffmpeg» y «path/to/ffprobe» se deben agregar las rutas de los archivos ffmpeg correspondientes.
Ejecutamos el programa y obtendremos un nuevo archivo con extensión WEBM como resultado, y lo importante, vemos como el tamaño del archivo final se redujo a solo 55 KB de 379KB, conservando la calidad de la imagen.
Como se pudo observar en el ejemplo del post, integrar FFmpeg con código java es realmente sencillo con esta librería.
enjoy!
Primeramente debemos saber que es un ToolTipText en Java, pues no es mas que esa información que se muestra cuando posic[...]
Los gráficos de torta, también llamados gráficos de 360 grados o circulares, son gráficos estadísticos que se utilizan p[...]
Crecen las startups en Bolivia: La mayoría está en Santa Cruz, Cochabamba y La Paz Según el «Mapeo del Ecosistema de Tec[...]
La misión espacial de la NASA, el Mars 2020 Rover Mission esta proyectada para lanzarse en julio de 2020 y su llegada s[...]
En este tutorial veremos la forma de conectarse a una base de datos de Firebird utilizando el lenguaje Java y el IDE Net[...]
Como habíamos mencionado en un anterior post Ejemplo socket java Cliente/Servidor , el lenguaje de programación entre el[...]