Android Studio2.2.3 通过JNI引用ffmpeg库小结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio2.2.3 通过JNI引用ffmpeg库小结相关的知识,希望对你有一定的参考价值。

修改步骤:

  1. 首先通过NDK14编译出libffmpeg.so ,将include目录取出

  2. 通过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

以上是关于Android Studio2.2.3 通过JNI引用ffmpeg库小结的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio2.2.3配置OpenCV3.1.0且不安装OpenCV Manager运行

Android中JNI的使用

Android JNI开发

蓝牙与 Android 上的 Qt。通过抽象类上的jni调用java类

浅析android下如何通过jni监控wifi网络连接dhcpcd执行和power电源控制

Android JNI编程—JNI基础