眼前多少难甘事,自古男儿当自强。这篇文章主要讲述Android Studio2.2.3 通过JNI引用ffmpeg库小结相关的知识,希望能为你提供帮助。
修改步骤:
- 首先通过NDK14编译出libffmpeg.so ,将include目录取出
- 通过AS建立基于jni的工程项目,将include目录放到cpp下;创建jniLibs/armeabi目录,将libffmpeg.so放到里边
文章图片
3.配置CMakeLists.txt
添加如下:
#add the ffmpeg lib
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/include)
add_library(ffmpeg-lib SHARED IMPORTED )
set_target_properties(ffmpeg-lib PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/armeabi/libffmpeg.so)
target_link_libraries( native-lib
ffmpeg-lib #ffmpeg lib
android #use the android log lib
${log-lib} )
4.配置build.gradle
主要添加arguments 和 ndk的配置
externalNativeBuild { cmake { cppFlags " " arguments ‘-DANDROID_TOOLCHAIN=clang‘,‘-DANDROID_STL=gnustl_static‘ } ndk { abiFilters ‘armeabi‘ } }
5.native_lib.cpp
#include < jni.h>
#include < string>
#include < android/log.h>
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavutil/imgutils.h"
#include "libavutil/avutil.h"
}
#define LOG_TAG "MyTagFFmpeg"
#define ALOGE(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
extern "C"
jstring
java_letv_com_myffmpeg_MainActivityFFmpeg_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello ,this is the first ffmpeg test !";
ALOGE("%s",hello.c_str());
char info[10000] = { 0 };
sprintf(info, "%s\n", avcodec_configuration());
hello += info;
return env-> NewStringUTF(hello.c_str());
}
That‘s all.
本文出自 “专注嵌入式多媒体技术” 博客,请务必保留此出处http://zyg0227.blog.51cto.com/1043164/1947097
推荐阅读
- tomct问题之-webapps下多出的ROOT目录
- Win8双核处理器与4核处理器有啥区别?
- Win8电脑蓝屏0x0000008e怎样办?
- Win8电脑内存条安装的步骤
- Win8电脑显卡啥牌子的好?
- Win8系统如何低格硬盘?Win8系统低格硬盘的办法
- Win8打印照片出错提示“存储空间不足,无法处理此命令”怎样处理?
- Win8双屏怎样设置主屏幕?Win8双屏显示设置办法
- Win8系统如何运用超级终端连接华为交换机?