Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Integración de FFmpeg con Java

Integración de FFmpeg con Java

Por jc mouse miércoles, enero 15, 2020

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

Convertir archivos GIF a WEBM desde java con FFmpeg

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.

gifs divertidos de peliculas

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.

conversion de archivos con java

videos divertidos

Como se pudo observar en el ejemplo del post, integrar FFmpeg con código java es realmente sencillo con esta librería.

enjoy!

Tags

Artículos similares

Conviertete en una Barbie o Ken con esta App de IA

La aplicación funciona gracias a la inteligencia artificial para generar las imagenes de Barbie & Ken, aunque se deb[...]

Construye tu aplicación de mensajeria

En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android. Necesitamos IDE: Eclipse + S[...]

Más de 400 impresionantes plantillas Readme para perfiles de GitHub

Un archivo README.md es un archivo de texto escrito en el lenguaje de marcado Markdown, este se encuentra en la raíz de[...]

HSQLDB: Gestor de bases de datos libre en java

HyperSQL DataBase (HSQLDB) es un moderno administrador de bases de datos relacionales, es portátil e implementado en jav[...]

Proyecto Base de Datos Access y Java

La base de datos elegida es Access 2007 (*.accdb), pero claro la migracion hacia otra base de datos como MySQL o Postgre[...]

Elon Musk lanza Grokipedia: Lo que tienes que saber de la nueva Enciclopedia con IA

El empresario, inversor, activista político​​ y magnate Elon Musk lanzó Grokipedia, su versión de Wikipedia, este lunes[...]