Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Integración de FFmpeg con Java

Integración de FFmpeg con Java

Autor 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

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Búsqueda binaria (Binary Search)

Búsqueda binaria (Binary Search)

Un algoritmo de búsqueda binaria se emplea para buscar un valor en particular en un arreglo previamente ordenado. Para i...

Sub Tablas: Agregar tablas dentro de otras tablas en Java

Sub Tablas: Agregar tablas dentro de otras tablas en Java

El JTable de Java es un gran componente para mostrar datos en una tabla de una forma rápida y sencilla, sin embargo en v...

Client REST usando GSON y Volley

Client REST usando GSON y Volley

En este post crearemos un cliente android para consumir un recurso de un REST API utilizando las librerías GSON y Volley...

Uso de BitmapFont en LibGDX

Uso de BitmapFont en LibGDX

En este tutorial conoceremos lo que es el uso de BitmapFont en LibGDX y algún uso que le podemos dar como crear un menú,...

Criba de Eratóstenes animado

Criba de Eratóstenes animado

Eratóstenes era un matemático griego del siglo  III a.C. el cual ideó una manera rápida de obtener todos los números pri...

Reproductor de video con VLCJ

Reproductor de video con VLCJ

VLC Media Player es un reproductor multimedia de código abierto muy popular desarrollado por el proyecto VideoLAN. VLCJ...

Comparte lo que sabes

Categorias

Últimas entradas

En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario.  Sin mas que...

Muchas veces necesitamos de fotos para adornar nuestros perfiles en RRSS pero no queremos subir nuestras propias fotos p...

En esta ocasión aprenderemos a conectaros con una base de datos Oracle desde Laravel. Es un tutorial sencillo y cortito,...

En este tutorial conoceremos una forma de conectar una aplicación en Laravel con tres bases de datos diferentes, 2 en My...

Herramientas

Generador de Enlaces a Whatsapp