【问题标题】:FFMpeg jni in Android?Android中的FFMpeg jni?
【发布时间】:2011-05-20 11:20:48
【问题描述】:

我已经构建了 Bambuser (http://bambuser.com/opensource) 提供的 FFMPEG 可执行文件和库。所以我设法构建了 Android 可执行文件和库。如何在我的 Eclipse 项目中链接这些库并从 Java 调用 FFmpeg 函数?开源代码包括 C 头文件。

我是 Android 原生编码的新手,我找不到一个简单的答案。基本:拥有一堆与 Android 兼容的库和一些 C 头文件,我必须做什么才能从 java (+Android SDK) 重用这些库的功能?

任何帮助将不胜感激。

亲切的问候,

为什么要这样做

【问题讨论】:

  • 你能告诉你构建ffmpeg的步骤吗?我正在使用 windows 和 cygwin 1.7.9 。
  • 经过大量研究,似乎存在一些文件名/文件路径约定问题,无法让您使用 Windows 编译 ffmpeg。我使用 vmware 安装 Ubuntu 并以这种方式编译它们。
  • @Swathi EP:几乎指导线程在 Linux 或 Mac OS 上运行,而不是在 Windows 上运行。我还没有找到任何适用于 Windows 的帖子,但我找到了包含已经为 android 构建的库的网站。因此,您可以立即下载并使用它们。那个网站是code.google.com/p/javacv/downloads/list,祝你好运!

标签: android ffmpeg


【解决方案1】:

您必须使用 JNI 约定编写一些 C 胶水代码,以将 FFmpeg 功能公开给 Java 代码。以下是 Android NDK 示例中用 C 语言实现的 JNI 方法示例:

jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

您还需要一些 Java 代码来加载库并声明本机方法。

public class HelloJni
{
    public native String  stringFromJNI();

     static {
        System.loadLibrary("hello-jni");
    }
}

我发现this project on sourceforge 已经为ffmpeg 实现了一些JNI 接口以将其与Java 媒体框架集成。您可能会发现它很有用。

还有另一种名为 JNA(Java Native Access)的 Java FFI 技术允许您在 Java 中声明本机函数原型并直接调用它们。使用它可能需要更少的样板代码。有关 Android 实现,请参阅 this project。 (我自己没用过)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2013-12-29
    • 2013-03-04
    • 2014-02-01
    相关资源
    最近更新 更多