在Android中链接FFMpeg

时间:2014-06-08 19:23:15

标签: android ffmpeg

我想在android上使用FFMpeg。我对这个话题很陌生。我使用本教程1构建库。现在我有.so和.h文件,但我不知道如何在我的项目中使用它们。我可能需要在我的Android.mk文件中链接它。这是我项目中的.mk和.c文件:

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS := -llog

LOCAL_MODULE    := ndksetup
LOCAL_SRC_FILES := native.c

include $(BUILD_SHARED_LIBRARY)

native.c

#include <jni.h>
#include <string.h>
#include <android/log.h>

#define DEBUG_TAG "NDKSetupActivity"

void Java_com_example_ndksetup_MainActivity_printLog(JNIEnv *env, jobject this, jstring logString)
{
    jboolean isCopy;
    const char * szLogString = (*env)->GetStringUTFChars(env, logString, &isCopy);

    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK: %s", szLogString);

    (*env)->ReleaseStringUTFChars(env, logString, szLogString);
}

jint Java_com_example_ndksetup_MainActivity_fibonacci(JNIEnv * env, jobject this, jint value)
{
    if (value <= 1) return value;
    return Java_com_example_ndksetup_MainActivity_fibonacci(env, this, value-1)
            + Java_com_example_ndksetup_MainActivity_fibonacci(env, this, value-2);
}

有人能告诉我如何在native.c文件中使用.so和.h文件吗?

1 个答案:

答案 0 :(得分:1)

这将如何从您的本机C文件中调用JNI文件夹中的lib文件

JNIEXPORT jstring JNICALL Java_*(JNIEnv *pEnv, jobject pObj) {
    char* lCodecName = gVideoCodecCtx->codec->name;
    return (*pEnv)->NewStringUTF(pEnv, lCodecName);
}

这就是你如何链接Java代码中的本机库

static {
        System.loadLibrary("<native jni lib file name>");
    }