ffmpeg编译

配置环境

编译环境ubuntu16.0.4

编译版本 ffmpeg-3.2.12

打开profile文件

vi /etc/profile

在尾部添加

export NDK_PATH="/home/lq/android-ndk-r14b"
export PAHT=$NDK_PATH:$PATH

保存

source /etc/profile

shell脚本

用vi文件编辑器写ffmpeg_build.sh文件,不能从windows直接复制,不然会有特殊字符,导致编译错误

#!/bin/bash
#最低兼容版本
export PLATFORM_VERSION=android-14
function build
{
    echo "start build ffmpeg for $ARCH"
    #configure 编译裁剪配置,你可以在ffmpeg根目录下使用./configure --hellp 查看 ./configure后可填入的参数。
    #-target-os 指定编译目标的系统,由于编译目标是Android系统,Android又是基于liunx内核,所以是liunx,如果要是iOS,则指定darwin
    ./configure --target-os=linux \
    #编译输出文件路径
    --prefix=$PREFIX --arch=$ARCH \
    #禁止输出文档
    --disable-doc \
    #启用构建共享库
    --enable-shared \
    #禁止静态库
    --disable-static \
    --disable-yasm \
    --disable-asm \
    --disable-symver \
    --enable-gpl \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --cross-prefix=$CROSS_COMPILE \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    #启用优化生成库文件大小,编译时间会延长
    --enable-small \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    #清理编译过程中临时文件
    make clean
    #编译,可指定编译线程数  -j4
    make
    #执行安装,就是将相关编译好的程序,类库以及头文件示例代码拷贝到
    make install
    echo "build ffmpeg for $ARCH finished"
}

ARCH=arm
CPU=arm
#生成库文件的安装目录
PREFIX=$(pwd)/android/$ARCH
#编译工具链目录
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#类似于通配符方式指定 bin 目录下以 arm-linux-androideabi-
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
ADDI_CFLAGS="-marm"
# 设置你的android平台编译器的版本 这里采用Android4.0
SYSROOT=$NDK/platforms/$PLATFORM_VERSION/arch-$ARCH/
build

编译

修改configure文件,主要跟动态库名字有关,不修改,Android无法识别

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

编译成功后目录,include头文件,lib文件夹中存放动态库


clipboard.png

clipboard2.png

问题

问题1.png

ndk版本引起的,解决方法替换成ndk14b

你可能感兴趣的:(ffmpeg编译)