FFmpeg交叉编译与接入Android工程
source link: https://husteryp.github.io/2018/11/17/FFmpeg交叉编译与接入Android工程/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
前言
本文主要讲解如何在 Linux
上编译 FFmpeg
, 以及将编译出来的动态库( so
)接入已有的 Android
工程
正文
一. FFmpeg交叉编译
本文选用的 FFmpeg
版本是 FFmpeg 4.0
, NDK
版本是 Android-ndk-r15c
, 注意在编译 FFmpeg
时, 对 NDK
版本有要求, 另外, 笔者最开始选用最新版本的 NDK
, 总是编译不过, 去查证了一下, 发现从 Androud-ndk-r16
开始, 其用于交叉编译都有问题了, 所以选用较低版本的 Androud-ndk
; 本文选用的 FFmpeg
版本和 NDK
版本亲测可编译通过; 先提供下载地址:
笔者选用的编译环境是 ArchLinux
, Windows
上的编译的话, 大体流程不变, 环境配置需要自己弄啦~
在开始之前, 需要先了解一下相关知识:
- JNI和NDK
- CPU架构
- 交叉编译
- FFmpeg简介
这里推荐 官方文档 , 对以上方面讲解比较详细; 下面简要介绍重点地方
1.1 基础知识
1.1.1 JNI和NDK
JNI
就是 Java Native Interface
, 即 Java
层和 Native
层通信的接口; 通过 JNI
, Java
可以实现和其他语言之间的互相调用(注意其他语言不仅仅只限于 C/C++
, 虽然大多时候是 C/C++
); Java
是跨平台的, 但是 C/C++
不是跨平台的, 所以 JNI
也使得 Java
需要考虑和特定平台相关的特性
NDK
就是 Native Development Kit
, 是 Android
平台提供的一个工具集, 提供与本地代码之间的交互
详细可参见 博客
1.1.2 CPU架构
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK