【问题标题】:Including FFMPEG with a Java application on Mac在 Mac 上包含带有 Java 应用程序的 FFMPEG
【发布时间】:2011-02-27 23:08:43
【问题描述】:

我正在编写一个可在 Windows 和 Mac 上使用的 Java 程序。在程序中,我使用 FFMPEG 将 MOV 文件转换为 FLV。在 Windows 上,这没问题——只需调用命令即可。但在 Mac 上,我不太确定该怎么做。用户真的必须在他们的机器上安装 FFMPEG,还是可以以某种方式将其包含在 Java 应用程序中?

感谢您的帮助/指导!

【问题讨论】:

标签: java macos ffmpeg


【解决方案1】:

您还可以查看Xuggler,它是适用于 Windows、Mac 和 Linux 的 FFmpeg 的 Java 包装器。

【讨论】:

    【解决方案2】:

    还没有玩过它,但 FFMPEG 不是作为库可用吗?然后你可以简单地通过 JNI 或更好的 JNA 调用它。这应该适用于两个平台。

    【讨论】:

    • 谢谢阿克塞尔。我不太熟悉整个过程是如何工作的,但我知道我必须进行制作和安装才能在我的 Mac 上设置它。我的用户是否必须做同样的事情,或者是否有一个文件可以包含在我的包中,以便设置库并准备好使用?
    • 哦,现在我明白了。 FFMPEG 只是在源代码中分发。我没有 mac,但由于 MacOS X 基于 Unix,也许我可以提供帮助。如果没有许可问题,您可以分发与您的应用程序一起编译的二进制文件(以及所需的库,如果有,请使用“nm”查找)。另一种方法是使用 libavformat/libavcodec 而不是通过 cli 启动 FFMPEG。我建议使用 JNA,因为它似乎比编写 JNI 包装器要简单得多。
    【解决方案3】:

    如果您使用的是 Java 媒体框架 (JMF),Fobs4JMF 是 FFMPEG 的 Java 包装器,可用作 JMF 插件。

    【讨论】:

      【解决方案4】:

      我知道这个帖子已经很老了,但我想我会在这里分享我的解决方案,以防有人还在寻找......

      我在 pom.xml 中添加了以下依赖项

      <!-- https://mvnrepository.com/artifact/org.bytedeco/ffmpeg -->
         <dependency>
             <groupId>org.bytedeco</groupId>
             <artifactId>ffmpeg</artifactId>
             <version>RELEASE</version>
         </dependency>
      
         <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-platform -->
         <dependency>
             <groupId>org.bytedeco</groupId>
             <artifactId>javacv-platform</artifactId>
             <version>RELEASE</version>
         </dependency>
      
         <!-- https://mvnrepository.com/artifact/org.bytedeco/javacpp -->
         <dependency>
             <groupId>org.bytedeco</groupId>
             <artifactId>javacpp</artifactId>
             <version>RELEASE</version>
         </dependency>
      

      然后我使用 ProcessBuilder 来执行 FFMPEG 命令。要合并音频和视频,我使用以下命令:

      String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
          try {
              ProcessBuilder pb = new ProcessBuilder(
                      ffmpeg,
                      "-i",
                      [PATH TO AUDIO FILE],
                      "-i",
                      [PATH TO VIDEO FILE],
                      "-acodec",
                      "copy",
                      "-vcodec",
                      "copy",
                      [PATH TO OUTPUT FILE]
              );
              
              pb.redirectErrorStream(true);
              Process process = pb.start();
              process.waitFor();
      
          } catch (IOException | InterruptedException e) {
              e.printStackTrace();
          } 
      

      【讨论】:

        【解决方案5】:

        我得到了这个库的解决方案,现在它适用于 windows 和 Mac 环境。

        你不需要为 mac 安装任何额外的 ffmpeg 库,这个 jar 包含这个。您可以通过将邮件发送到 - ffmpegmac600@gmail.com 来找到该 jar。

        【讨论】:

        • 哥们,你忘记添加链接了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-11
        • 1970-01-01
        相关资源
        最近更新 更多