FFMpeg3.3.3编译Android库文件

来源:互联网 发布:网络情歌《恋恋红尘》 编辑:程序博客网 时间:2024/05/17 23:28

      新工作是做Android端视频编辑功能,初步方案有两种:采用Android SDK带有的MediaCodec+OpenGL方式实现和三方C库大名鼎鼎的FFmpeg,由于需要FFmpeg自带多种视频处理效果,3.14之后支持Android硬解(h264_mediacodec),还有不知道MediaCodec+OpenGL怎样实现视频裁剪成正方形的功能(如有知道的朋友可以留言),因此,采用FFmpeg方式实现。

     废话不多说,先从第一步编译so库文件开始。本文编译的是最新的FFmpeg3.3.3。

     从FFmpeg官网下载最新的FFmpeg压缩文件。解压后需要修改ffmpeg-3.3.3文件夹下的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-3.3.3文件夹新建一个文本文件,起名build.sh(名字可以自己随意起,在执行命令时注意名字统一)编写build.sh脚本文件。

    

#!/bin/bashexport TMPDIR=/Users/moore/Documents/ffmpeg/tempNDK=/Users/moore/Documents/Android/sdk/ndk-bundleSYSROOT=$NDK/platforms/android-21/arch-arm/TOOLCHAIN=/Users/moore/Documents/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64CPU=armPREFIX=/Users/moore/Documents/ffmpeg/outputADDI_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 \        --enable-jni\        --enable-mediacodec\        --enable-decoder=h264_mediacodec\        --enable-hwaccel=h264_mediacodec\        --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \        --target-os=android \        --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}build_onecd ../
      **这里有几点需要注意**

      TMPDIR、NDK、SYSROOT和TOOLCHAIN需要换成你自己电脑的路径。还有TMPDIR路径要存在,不然编译的时候会警告,至少我的是这样的。


        --enable-jni\        --enable-mediacodec\        --enable-decoder=h264_mediacodec\        --enable-hwaccel=h264_mediacodec\
     上面这几行是增加了Android硬解的支持。--target-os=android 这一点要注意,以前其他编译文件都是--target-os=linux。

     编写build.sh文件后,打开终端,进入ffmpeg3.3.3文件夹下,执行命令,获取sh文件的权限

[plain] view plain copy
  1. chmod +x ./build_android.sh  

执行build_android.sh

[plain] view plain copy
  1. ./build_android.sh 
执行时间稍长大概要等几分钟,随后会在ffmpeg3.3.3同目录的output文件夹下生成相应的库文件和头文件。而且库文件还告别了以前在在文件名上加版本号的格式,强迫症表示看起来爽多了。

赶快享受自己编译最新版FFmpeg的快感吧,如果实在懒得编译的,留个邮箱我可以把库文件和头文件发给你。




原创粉丝点击