簡體   English   中英

在Android中鏈接FFMpeg

[英]Link FFMpeg in Android

我想在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文件?

這就是從本地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>");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM