FFmpeg编译Android版本

来源:互联网 发布:淘宝盗图技巧 编辑:程序博客网 时间:2024/06/05 08:08

FFmpeg是很好用的一个音视频库,功能强大,但是用起来并不是很方便。之前一直不想用FFmpeg,因为感觉编译太麻烦,但是到了不得不用的时候了,没办法,参考了网上大神的方法,在这里自己也记录一下方便以后再次查看。


一、环境

        Ubuntu14.04


二、NDK环境配置

        NDK下载链接:https://developer.android.google.cn/ndk/downloads/index.html

        下载完后解压到任意路径即可,然后Alt+T打开终端执行以下命令,其中NDK_HOME的值改为你自己的NDK路径

       

export NDK_HOME=/home/y/adm/software/android-ndk-r14bexport PATH=$NDK_HOME:$PATH

三、FFmpeg源码下载及配置

        FFmpeg下载地址:http://www.ffmpeg.org/download.html

        一样解压到任意路径,然后找到解压后目录中的/ffmpeg-3.3.4/configure,打开该文件修改其中内容即可:

       

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)'

四、编译

        在FFmpeg根目录新建一个空文档,改名为:build.sh

        在其中写入以下内容:

        其中有些地方需要修改

        1、TMPDIR=为临时目录,自己新建一个,把路径写在这里

        2、NDK=你自己的NDK路径

        3、SYSROOT=编译时的platform版本,根据需要自己选择一个版本

        4、TOOLCHAIN=这里主要还是前边部分的NDK路径需要修改为你自己的

        5、PREFIX=编译后的so等文件的生成路径,自己新建一个文件夹,把路径写在这里

       

#!/bin/bashexport TMPDIR=/home/y/adm/software/ffmpeg/tmpdirNDK=/home/y/adm/software/android-ndk-r14bSYSROOT=$NDK/platforms/android-16/arch-arm/TOOLCHAIN=/home/y/adm/software/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64CPU=armPREFIX=/home/y/adm/software/ffmpeg/result/ADDI_CFLAGS="-marm"function build_one{./configure \--prefix=$PREFIX \--enable-shared \--disable-static \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-doc \--disable-symver \--enable-small \--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_FLAGmake cleanmakemake install}build_one
修改完后打开终端,切换到FFmpeg根目录,执行:

sh build.sh
大概需要几分钟,等待编译结果。
编译完成后,打开PREFIX指定的目录,其中有include和lib两个文件夹,删除lib文件夹中的pkgconfig文件夹和so的链接文件,此时该文件夹中应只剩so库,余下的include和lib就是开发需要的文件了


PS:在编译最后出现了这么一句话:

build.sh: 35: build.sh: build_one: not found

但是编译结果好像是正常的,反正是sh文件的最后一句了,应该不影响结果

原创粉丝点击