美文网首页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