【NO.1】Android音视频: 引入FFmpeg
本文你可以了解到
本文将介绍如何将上一篇文章编译出来的 FFmpeg so 库,引入到 Android 工程中,并验证 so 是否可以正常使用。
一、开启 Android 原生 C/C++ 支持
在过去,通常使用 makefile 的方式在项目中引入 C/C++ 代码支持,随着 Android Studio 的普及,makefile 的方式已经基本被 CMake 替代。
有了 Android 官方的支持,NDK 层代码的开发变得更加容易。以前一谈到 Android NDK ,许多人就会大惊失色,感觉是深不可测的东西,一方面是 makefile 的编写很难,一方面是 C/C++ 相比 Java 来说,比较晦涩。
但是不必担心,一是有了 CMake ,二是对于 C/C++ 的基本使用其实和 Java 差不多,本系列涉及到的,也都是对 C/C++ 的基础使用,毕竟,高级的我也不会不是吗?哈哈哈~~
1. 安装 CMake
首先,需要下载 CMake 相关工具,在 Android Studio 中依次点击 Tools->SDK Manager->SDK Tools,然后勾选
CMake : CMake 构建工具
LLDB : C/C++ 代码调试工具
NDK : NDK 环境
最后依次点击 OK->OK->Finish ,开始下载(文件比较大,可能会比较慢,请耐心等待)。
下载CMake工具
2. 添加 C/C++ 支持
有两种方式:
一是,新建一个新的工程,并勾选 C/C++ 支持选项,系统将自动创建一个支持 C/C++ 编码的工程。
二是,在已有的项目上,手动添加所有的添加项来支持 C/C++ 编码,其实就是自己手动添加「第一种方式」中 Android Studio 为我们自动创建的那些东西。
首先,通过新建一个新工程的方式,看看 IDE 为我们生成了那些东西。
1)新建 C/C++ 工程
依次点击 File -> New -> New Project,进入新建工程页面,拉到最后,选择 Native C++ 然后按照默认配置,一路 Next -> Next -> Finish 即可。
新建C++工程
2)Android Studio 自动生成了什么
生成的工程目录如下:
工程目录
重点关注上图标注的3个地方:
第一,最上层的 MainActivity
classMainActivity : AppCompatActivity() {
overridefunonCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Example of a call to a native method
sample_text.text=stringFromJNI()
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
externalfunstringFromJNI(): String
companionobject {
// Used to load the 'native-lib' library on application startup.
init {
System.loadLibrary("native-lib")