Soy bastante nuevo en Java, se necesita escribir un programa que escuchar a la conversión de vídeo de instrucciones y convertir el vídeo una vez que una nueva instrucción llega (las instrucciones se almacenan en Amazon SQS, pero es irrelevante a mi pregunta)

Estoy frente a una elección, ya sea el uso de Java en tiempo de ejecución a exec «ffmpeg» conversión (como desde la línea de comandos), o puedo usar ffmpeg contenedor escrito inJava http://fmj-sf.net/ffmpeg-java/getting_started.php

Me gustaría mucho prefieren el uso de Java en tiempo de ejecución para ejecutar ffmpeg directamente, y evitar el uso de java-ffmpeg contenedor como tengo que aprender la biblioteca. así que mi pregunta es ¿hay beneficios con el uso de java-ffmpeg contenedor a través de exec ffmpeg directamente mediante el uso de tiempo de ejecución? No necesito ffmpeg para reproducir videos, convertir videos

Gracias

InformationsquelleAutor Beier | 2009-08-15

8 Comentarios

  1. 35

    Si no me equivoco, el «ffmpeg contenedor» proyecto vinculado a está fuera de fecha y no se mantiene. ffmpeg es un proyecto activo, muchos de los cambios y libera todo el tiempo.

    Que usted debe buscar en la Xuggler proyecto, esto proporciona una API de Java para lo que quieres hacer, y tienen una estrecha integración con ffmpeg.

    http://www.xuggle.com/xuggler/

    Debe usted decide ir hacia abajo el tiempo de ejecución.exec() camino, este Red5 hilo debe ser útil:

    http://www.nabble.com/java-call-ffmpeg-ts15886850.html

    • sólo tuvo un breve vistazo a xuggler documentación, exactamente lo que necesito. gracias por la ayuda!
    • Gran. Sólo ser conscientes de que es GPL, usted puede necesitar una licencia comercial en la producción.
    • a la derecha, aspecto en que así
    • En realidad Xuggler ahora es LGPL (aunque se GPL si se usa con libx264)
    • Tratando de Xuggler, pero no su trabajo.. las alternativas?
    • Xuggle proyecto se ha apagado, blog.xuggle.com/2013/02/05/on-hiatus

  2. 21

    Yo también estoy buscando algo para envolver FFMPEG en Java. Durante la búsqueda, he encontrado esto: https://github.com/bramp/ffmpeg-cli-wrapper.

    A partir de hoy, parece haber sido modificado hace un mes. Por lo tanto, esperemos que se quede ahí por un rato.

    Una muestra de sus docs:

    FFmpeg ffmpeg = new FFmpeg("/path/to/ffmpeg");
    FFprobe ffprobe = new FFprobe("/path/to/ffprobe");
    
    FFmpegBuilder builder = new FFmpegBuilder()
        .setInput(in)
        .overrideOutputFiles(true)
        .addOutput("output.mp4")
            .setFormat("mp4")
            .setTargetSize(250000)
    
            .disableSubtitle()
    
            .setAudioChannels(1)
            .setAudioCodec("libfdk_aac")
            .setAudioRate(48000)
            .setAudioBitrate(32768)
    
            .setVideoCodec("libx264")
            .setVideoFramerate(Fraction.getFraction(24, 1))
            .setVideoResolution(640, 480)
    
            .setStrict(FFmpegBuilder.Strict.EXPERIMENTAL)
            .done();
    
    FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
    executor.createTwoPassJob(builder).run();
    • ¿tiene solución para extraer el audio o de vídeo meta info?
    • sí utilizando ffprobe ir en el sitio web de github, puedes ver un ejemplo
    • La biblioteca no admite la terminación del proceso hijo (si desea capturar un vídeo de tu pantalla), ni se exponga el proceso para el cliente. Dado que ffmpeg está muy bien documentado, es mejor correr ffmpeg manualmente a través de la java.lang.Process de la API.
  3. 9

    Hay una gran cantidad de bibliotecas de Java proporciona FFMPEG contenedores. Sin embargo, la mayoría de estas bibliotecas son, lamentablemente, obsoletas y viejas FFMPEG versiones que carecen de algunos de los más importantes codecs (por ejemplo, Xuggler, humilde video, JavaAV, JavaAVC, y java). Así que ten cuidado cuando se utilizan estos proyectos!

    Sin embargo, hay una FFMPEG contenedor que es todavía desarrollado activamente y apoya FFMPEG 3, demasiado:

    Alternativamente, usted puede utilizar un contenedor de la interfaz de línea de comandos de FFMPEG, tales como ffmpeg-cli-wrapper. Entonces es que está en su mano para actualizar ffmpeg manualmente sin tener que esperar a una nueva versión de la envoltura de la biblioteca.

  4. 8

    También, como de Xuggler 3.3, Xuggler es LGPL, lo que significa que usted no necesita una licencia comercial.

    • No se admite la conversión de mp3 y las imágenes a un archivo de vídeo? gracias
  5. 8

    Yo escribí mi propio Java ffmpeg línea de comandos de contenedor: Jaffree. Se trabaja con dos ffprobe y ffmpeg y apoyos programáticos de vídeo de producción y consumo.
    También es, en mi opinión, más conveniente líquido de la API.

    Aquí es un ffprobe ejemplo de uso:

    FFprobeResult result = FFprobe.atPath(BIN)
            .setInputPath(VIDEO_MP4)
            .setShowStreams(true)
            .setShowError(true)
            .execute();
    
    if (result.getError() != null) {
        //TODO handle ffprobe error message
        return;
    }
    
    for (Stream stream : probe.getStreams().getStream()) {
        //TODO analyze stream data
    }
    
    ProgressListener listener = new ProgressListener() {
        @Override
        public void onProgress(FFmpegProgress progress) {
            //TODO handle progress data
        }
    };

    Y esto es para ffmpeg:

    FFmpegResult result = FFmpeg.atPath(BIN)
            .addInput(Input.fromPath(VIDEO_MP4))
            .addOutput(Output.toPath(outputPath)
                    .addCodec(null, "copy")
            )
            .setProgressListener(listener)
            .execute();
    • Hola, ¿cómo se puede gestionar la interfaz java de la biblioteca cuando ffprobe xsd cambios a lo largo de cada versión de ffmpeg? P. S. Mi planteamiento era similar a la tuya, pero este tema me hace palo a una versión de ffmpeg.
    • He probado sólo en la última versión de ffmpeg, hay una opción de «bits de salida exacta».
  6. 3

    Los beneficios del uso del contenedor sería, principalmente, que ofrece más y de grano fino, la funcionalidad no está accesible a través de la línea de comandos (no relevante) y hace que el manejo de errores y el control de la situación más fácil, tendrás que analizar la línea de comandos de la herramienta de la salida estándar y el error de los arroyos.

  7. 0

    yo intente de varias maneras, la más sencilla para mí es ffmpeg-cli-wrapper, porque predeterminado de usar ffmpeg o específicos, además se puede configurar montón de configuración como la escala, el bitrate… conseguir que la duración… JAVE de sauronsoftware hacer mucho error, XUGGLE y otros me pareció demasiado complicado

Dejar respuesta

Please enter your comment!
Please enter your name here