转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331
之前曾写过一篇《FFmpeg在Linux下安装编译过程》,今天有空就用Android Studio编译FFmpeg库并移植,并附上调用ffmpeg简单示例,看下Agenda如下:
网址:https://ffmpeg.org/download.html#build-mac
编辑.bash_profile文件
因为是为了配置NDK开发环境,输入Android NDK下目录,前面是android sdk的,可以不用动它,最终.bash_profile文件如下:
export PATH=$(PATH):/Users/hejunlin/android-sdks/platform-tools
export NDK_ROOT=/Users/hejunlin/Downloads/android-ndk-r10e
export PATH=$PATH:$NDK_ROOT
离开了编辑器后,在终端输入 $PATH 并且按enter键来确认是否编辑成功,此时应该会出现所有的环境变量(以:号相分隔)
接下来·开始进行测试ndk是否能正常编译jni
(1) 终端进入到 NDK下面的 samples 目录下。
(2) 输入 cd hello-jni/ ,回车,然后执行 ndk-build
出现以下界面代表配置成功。
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
替换为下面内容:
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
接下来开始写shell脚本
这里有一个坑:我用记事本写了个sh脚本,一直报如下错误:
#!/bin/sh
NDK=/Users/hejunlin/Downloads/android-ndk-r10e
SYSROOT=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
如果大家要编译,记得改下前三行,对应自己机器上的环境
接着开始执行这个shell脚本,在终端输入 ./ build_android.sh , 如图:
本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331
接下来写在Android studio写一个示例,调用ffmpeg中方法
建一个工程:在src/main下建一个jni目录
开始编译目标so,在Studio中的Terminal面板中:执行ndk-build
(在此之前记得要在local.properties下配置ndk目录)
然后建立一个jniLibs文件夹,把这些so拷贝进去
接着写MainActivity代码,如下:
最终效果如图:
以上相关资料及下载的ffmpeg及ndk下载链接:
https://pan.baidu.com/s/1eRVON4m(永久链接)
第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。