2012.08.24(2)——— android ffmpeg.so 测试

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了

猜你喜欢

转载自trylovecatch.iteye.com/blog/1662063