链接Android上的静态库Android.mk ffmpeg
我用《卫报》的脚本()构建了FFMPEG。一切顺利,我有以下结构:链接Android上的静态库Android.mk ffmpeg,android,ffmpeg,Android,Ffmpeg,我用《卫报》的脚本()构建了FFMPEG。一切顺利,我有以下结构: jni/ |-- Android.mk |-- demo.c |-- include/ | |-- libavcodec/ | | |-- headers files | |-- libavdevice/ | | `-- avdevice.h | |-- libavfilter/ | | |-- headers files | |-- libavformat/ | | |-- he
jni/
|-- Android.mk
|-- demo.c
|-- include/
| |-- libavcodec/
| | |-- headers files
| |-- libavdevice/
| | `-- avdevice.h
| |-- libavfilter/
| | |-- headers files
| |-- libavformat/
| | |-- headers files
| |-- libavresample/
| | |-- headers files
| |-- libavutil/
| | |-- headers files
| |-- libpostproc/
| | |-- headers files
| |-- libswresample/
| | |-- headers files
| |-- libswscale/
| | |-- headers files
| `-- sox.h
`-- lib/
|-- libavcodec.a
|-- libavdevice.a
|-- libavfilter.a
|-- libavformat.a
|-- libavresample.a
|-- libavutil.a
|-- libpostproc.a
|-- libsox.a
|-- libswresample.a
|-- libswscale.a
|-- libx264.a
这是我的Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
FFMPEG_LIBS := $(addprefix lib/, \
libavformat.a \
libavcodec.a \
libpostproc.a \
libswscale.a \
libavutil.a \
x264.a )
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_SRC_FILES := demo.c
LOCAL_LDLIBS := -llog
LOCAL_STATIC_LIBRARY := $(FFMPEG_LIBS)
LOCAL_MODULE := demo
include $(BUILD_SHARED_LIBRARY)
和我的demo.c文件:
#include <jni.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavformat/avio.h>
#include <libswscale/swscale.h>
#include <libavutil/avstring.h>
JNIEXPORT jint JNICALL Java_com_example_ffmpeg_guardian_MainActivity_logFileInfo(JNIEnv *env, jclass this, jstring filename)
{
av_register_all();
AVFormatContext *pFormatCtx;
const jbyte *str;
str = (*env)->GetStringUTFChars(env, filename, NULL);
if(avformat_open_input(&pFormatCtx, str, NULL, NULL)!=0)
return 1;
else
return 2;
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
JNIEXPORT jint JNICALL Java\u com\u示例\u ffmpeg\u guardian\u main活动\u logFileInfo(JNIEnv*env,jclass this,jstring文件名)
{
av_寄存器_all();
AVFormatContext*pFormatCtx;
常量jbyte*str;
str=(*env)->GetStringUTFChars(env,文件名,NULL);
if(avformat\u open\u输入(&pFormatCtx,str,NULL,NULL)!=0)
返回1;
其他的
返回2;
返回0;
}
问题是,当我尝试使用NDK(r8)编译时,我得到了以下消息:
Compile thumb : demo <= demo.c
SharedLibrary : libdemo.so
demo.o: In function `Java_com_example_ffmpeg_guardian_MainActivity_logFileInfo':
demo.c:11: undefined reference to `av_register_all'
demo.c:17: undefined reference to `avformat_open_input'
collect2: ld returned 1 exit status
make: *** [ffmpeg-guardian/obj/local/armeabi/libdemo.so] Error 1
compilethumb:demo