2012.08.24(2)——— android ffmpeg.so 测试
参考:
http://tq09931.iteye.com/blog/1011895
刚刚把ffmpeg编译成功了,但是为了验证是否正确 需要些一个测试程序
搜了一下 大多数都是验证了avcodec_version这个函数 我也一样 ,具体如下
1、java
package com.lp.ffmpeg;
import android.app.Activity;
import android.os.Bundle;
public class FfmpegActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println(getFFmpegVersion());
}
public native String getFFmpegVersion();
static{
System.loadLibrary("ffmpeg");
System.loadLibrary("ffmpeg-test");
}
}
2、jni
需要把ffmpeg的源码复制到jni目录下,注意这里的源码不是你下载的ffmpeg0.8.1,是运行了config.sh之后的ffmpeg
#include <jni.h>
#include <string.h>
#include <ffmpeg/libavcodec/avcodec.h>
#include "com_lp_ffmpeg_FfmpegActivity.h"
JNIEXPORT jstring JNICALL Java_com_lp_ffmpeg_FfmpegActivity_getFFmpegVersion
(JNIEnv * env, jobject obj){
char str[25];
sprintf(str, "%d", avcodec_version());
return (*env)->NewStringUTF(env, str);
}
3、Android.mk
LOCAL_PATH := $(call my-dir)
#
include $(CLEAR_VARS)
LOCAL_MODULE := ffmpeg-prebuild
LOCAL_SRC_FILES := libffmpeg.so
include $(PREBUILT_SHARED_LIBRARY)
#
include $(CLEAR_VARS)
LOCAL_MODULE := libffmpeg-test
LOCAL_C_INCLUDES := $(LOCAL_PATH)/ffmpeg
LOCAL_SRC_FILES := com_lp_ffmpeg_FfmpegActivity.c
LOCAL_LDLIBS := -L$(LOCAL_PATH)
LOCAL_LDLIBS += -llog
LOCAL_SHARED_LIBRARIES := ffmpeg-prebuild
include $(BUILD_SHARED_LIBRARY)
4、运行 就ok了