参考http://tq09931.iteye.com/blog/1011895
1. eclipse下新建android项目HelloJni
2. 在该工程目录下新建jni目录,把ffmpeg源代码拷进来,然后在jni目录下创建并编辑Android.mk和hello-jni.c文件
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
PATH_TO_FFMPEG_SOURCE := $(LOCAL_PATH)/ffmpeg
LOCAL_C_INCLUDES += $(PATH_TO_FFMPEG_SOURCE)
LOCAL_LDLIBS := -lffmpeg
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
hello-jni.c
#include <string.h>
#include <stdio.h>
#include <android/log.h>
#include <stdlib.h>
#include <jni.h>
#include <ffmpeg/libavcodec/avcodec.h>
jstring
Java_com_example_hellojni_MainActivity_stringFromJNI( JNIEnv* env,
jobject thiz )
{
char str[25];
sprintf(str, "%d", avcodec_version());
return (*env)->NewStringUTF(env, str);
}
3. 用ndk-build命令编译
完成后,在工程的libs/armeabi下生成libhello-jni.so
4. 把libffmpeg.so也拷至libs/armeabi下,写java代码进行测试
package com.example.hellojni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("1111");
setContentView(tv);
tv.setText(String.valueOf(stringFromJNI()));
}
public native String stringFromJNI();
static {
System.loadLibrary("ffmpeg");
System.loadLibrary("hello-jni");
}
}
5. 完成,运行后在手机上看到输出3617894