美文网首页Android音视频系列
AndroidStudio中配置FFmpeg

AndroidStudio中配置FFmpeg

作者: 以帅服人的珂哥 | 来源:发表于2017-12-26 23:03 被阅读39次

一、 FFmpeg下载地址

http://ffmpeg.org/releases/    选择的是ffmpeg-2.6.9.tar.gz(据说比较稳定)。

解压  tar xzvf ffmpeg-2.6.9.tar.gz

(Linux需有jdk与 ndk环境)ndk:https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip

二、修改configure文件

采坑记录:为什么修改呢? 哎!编译了20多分钟,编译出来的全是libavdevice.so.56这种不是以.so结尾的,辛辛苦苦导进去发现android不支持。

将configure文件的2779行(不同版本可能不一样,大约在这里):

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脚本 用于启动configure

为什么编写脚本的?当然直接调用configure也行,但是你会发现命令参数多到发指。而且shell脚本可以帮我们选择我们需要的功能,不多说。

#!/bin/bash

make clean

export NDK=/home/ndk/android-ndk-r14b

export SYSROOT=$NDK/platforms/android-9/arch-arm/

export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

export CPU=arm

export PREFIX=$(pwd)/android/$CPU

export ADDI_CFLAGS="-marm"

./configure --target-os=linux \

--prefix=$PREFIX --arch=arm \

--disable-doc \ --enable-shared \

--disable-static \ --disable-yasm \

--disable-symver \ --enable-gpl \

--disable-ffmpeg \ --disable-ffplay \

--disable-ffprobe \ --disable-ffserver \

--disable-doc \

--disable-symver \

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="-Os -fpic $ADDI_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

注意:(一个很菜的坑:在windows中编辑好拷入Linux不管用,恍然想到是文件不兼容,菜哭!所有最好在Linux中编辑)

export NDK=/home/ndk/android-ndk-r14b 为ndk路径。

export SYSROOT=$NDK/platforms/android-9/arch-arm/  要根据ndk目录中platforms支持版本配置。

export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64  同理ndk目录中toolchains。

四、执行脚本生成动态库

将脚本放入ffmpeg目录中,然后运行脚本。编译过程略长。

文件会编译到android/arm目录下。

五、Android Studio中配置

(AS需添加 c/c++ support)详情去了解 AS的ndk开发。过几天写个关于MakeFIle或者Cmake的学习。

1.导入

将编译好的include以及 需要的.so导入android studio libs目录下(so文件只导版本号高的就行)。如图:

2. gradle配置:

android—defaultConfig中添加

sourceSets{

               main{

                      jniLibs.srcDirs=['libs']

                }

 }

externalNativeBuild {

                          cmake {

                                     cppFlags "-frtti -fexceptions"

                                     abiFilters 'armeabi’

                          }

}

3.CMakeLists.txt配置

很简单就是连接动态库,编辑器还用不熟,看图吧:

按照add_library 与set_target_properties吧so全部引入 

也不要忘了最上面的

include_directories(libs/include)

set(DIR ../../../../libs)

最后还有

OK!配置完成。不出意外的话FFmpeg中的方法可以调用了

可以通过 jni 语法调用测试下。

记录下来篇幅不多,都是各种坑踩出来的。第一次写学习记录,吐槽下编辑器(以至于后面直接用图替代),下次学学用Markdown编辑。

下次记录下 FFmpeg的使用。


相关文章

网友评论

本文标题:AndroidStudio中配置FFmpeg

本文链接:https://www.haomeiwen.com/subject/nezegxtx.html