修改步骤:

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

  2. 通过AS建立基于jni的工程项目,将include目录放到cpp下;创建jniLibs/armeabi目录,将libffmpeg.so放到里边

3.配置CMakeLists.txt

添加如下:

#add the ffmpeg libinclude_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.

转载于:https://blog.51cto.com/zyg0227/1947097

Android Studio2.2.3 通过JNI引用ffmpeg库小结相关推荐

  1. android studio2.3.2增加jni

    2019独角兽企业重金招聘Python工程师标准>>> 最近试了下andorid studio增加jni,网上的方式说的太复杂了,这里记录下 android studio2.3版本增 ...

  2. android jni deletelocalref,JNI 引用, DeleteLocalRef使用场景详解

    局部引用: JNI 函数内部创建的 jobject对象及其子类( jclass. jstring. jarray等) 对象都是局部引用,它们在 JNI 函数返回后无效: 一般情况下,我们应该依赖 JV ...

  3. 【Android NDK 开发】JNI 引用 ( 局部引用 | 局部引用作用域 | 局部引用产生 | 局部引用释放 | 代码示例)

    文章目录 I . JNI 引用数据类型 II . JNI 引用 与 指针 III . 局部引用 作用域 IV . 局部引用 产生 与 释放 V . 局部引用 代码示例 I . JNI 引用数据类型 1 ...

  4. android prebuild第三方so库,Android NDK编译本地文件以及引用第三方so文件

    在需要引入第三方的so文件的情况下,怎样使用NDK编译本地代码? 1.新建jni文件夹,将你要编译源码的文件以及需要引入的so文件复制到jni文件目录下 2.编写android.mk文件,首先将你的将 ...

  5. FFmpeg系列(二)-Android项目引入FFmpeg库播放视频

    在系列一中讲述了如何编译FFmpeg的源码,现在就在Android项目中引入我们编译出来的库,并实现播放一个在线视频的功能 新建Android工程 新建一个支持ndk的Android工程,在AS中新建 ...

  6. Android Studio2.2 CMAKE高效NDK开发

    转自:http://www.it165.net/pro/html/201611/76734.html 前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的. 1. 它没有代码提示!!!这意味着 ...

  7. Android Studio NKD开发之 FFmpeg库的引入--简单播放器(主要验证是否正确引入ffmpeg库)

    缘由 之前一直在linux系统下编译除了ffmpeg的动态库,但是一直没用上,刚好今天实验上,本篇文章参考了http://blog.csdn.net/nothingl3/article/details ...

  8. 简单的Android视频转码器[1]:把FFMpeg移植到Android

    1 项目介绍 1.1 项目介绍 FFMpeg是做音视频开发的同学都会接触的一个开源项目,现将其移植到Android上,写一个简单的视频格式转码工具,作为自己Android jni开发的一个入门学习和A ...

  9. android jni调用so库

    今天,讲讲android studio 使用jni调用其他so库的使用. 首先说一下在网上查找资料时,对于调用第三方so库,有人说有两种方法: 1.    对于so库的API符合JNI格式(即使用ja ...

最新文章

  1. h5 移动端 关于监测切换程序到后台或息屏事件和visibilitychange的使用
  2. bootstrap-less源码分析:行和列
  3. html下拉框由后端,select下拉框通过ajax获取后台的值
  4. Unicode 转换 ASCII,ASCII 转换 Unicode 在线网站工具
  5. Docker(二)-在Docker中部署Nginx实现负载均衡(视频)
  6. 网站pc端分享QQ好友,空间,微博
  7. springboot 控制台程序读取配置文件(原创)
  8. 每天5分钟玩转kubernetes_DNS 访问 Service 每天5分钟玩转 Docker 容器技术(138)
  9. 不要再问我this的指向问题了
  10. ‘gbk‘ codec can‘t decode byte 0xb9 in position 58: illegal multibyte sequence
  11. 可视化编程语言是什么意思
  12. 三级java_java三级(最全的题库).doc
  13. python 网格搜索_Python机器学习笔记:Grid SearchCV(网格搜索)
  14. Android arm64-v8a、armeabi-v7a、armeabi、x86详解
  15. 吉林大学计算机网络考研知识点整理
  16. 对话Huobi Prime首发项目TOP:李林80%的时间都在问项目能否落地
  17. 今天看到一篇文章,收藏了很多大牛的博客
  18. S3C2440系统中断(转)
  19. Apache安装配置(Linux)-有手就行
  20. ushort mysql,C# NModbus4读取寄存器ushort[]

热门文章

  1. c 中ajax不起作用,Jquery AJAX調用:$(this)在成功后不起作用
  2. python中isinstance(3、object)_Python中为什么推荐使用isinstance来进行类型判断?而不是type...
  3. RabbitMQ (二)docker安装rabbitMQ
  4. java tm 安装在哪里,安装以及配置Java环境
  5. 简单的错觉画_一看就错?眼睛厉害还是大神画的厉害!
  6. 单应矩阵(Homography)基本概念和代码测试
  7. 无刷电机真威武,一通操作猛如虎
  8. 第十六届全国大学生智能车竞赛华南赛区竞赛事宜的通知
  9. 什么?欧洲也有个恩智浦杯?
  10. Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are already in use.....