使用 Java FFmpeg 包装器,还是简单地使用 Java 运行时来执行 FFmpeg?

新手上路,请多包涵

我是 Java 的新手,需要编写一个程序来监听视频转换指令并在新指令到达后转换视频。 (说明存储在 Amazon SQS 中,但与我的问题无关)

我面临一个选择,要么使用 Java 运行时来执行 FFmpeg 转换(比如从命令行),要么我可以使用用 Java 编写的 FFmpeg 包装器。

http://fmj-sf.net/ffmpeg-java/getting_started.php

我更喜欢使用 Java 运行时直接执行 FFmpeg,并避免使用 java-ffmpeg 包装器,因为我必须学习该库。

所以我的问题是:直接使用运行时使用 java-ffmpeg 包装器比 exec FFmpeg 有什么好处吗?

我不需要FFmpeg来播放视频,只是转换视频。

原文由 Beier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 827
2 个回答

如果我没记错的话,您链接到的“ffmpeg-wrapper”项目已经过时并且没有维护。 FFmpeg 是一个非常活跃的项目,一直在进行很多更改和发布。

你应该看看 Xuggler 项目,它为你想做的事情提供了一个 Java API,并且它们与 FFmpeg 紧密集成。

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

如果您选择沿着 Runtime.exec() 路径走下去,这个 Red5 线程应该会有用:

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

原文由 Peter Thomas 发布,翻译遵循 CC BY-SA 4.0 许可协议

我也在寻找用 Java 包装 FFMPEG 的东西。在搜索时,我发现了这个: https ://github.com/bramp/ffmpeg-cli-wrapper。

到今天为止,它似乎是一个月前修改过的。所以,希望它能坚持一段时间。

他们文档中的示例:

 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();

原文由 mateuscb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题