一、ffmpeg源码目录
一、安装ndk
1.下载ndk
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
2.安装unzip
apt-get install unzip
3.解压到当前目录
unzip android-ndk-r14b-linux-x86_64.zip
解压到指定目录:
unzip android-ndk-r14b-linux-x86_64.zip -d /ndk_build/
4.打开bashrc
vim ~/.bashrc
5.在bashrc末尾插入环境变量配置:
export NDKROOT=/ndk_build/android-ndk-r14b
export PATH=$NDKROOT:$PATH
6.按ESC再输入 :wq 保存退出
7.配置生效
source ~/.bashrc
二、ffmpeg编译
-
1.下载ffmpeg2.6.9(这个版本比较稳定)
-
2.解压
tar -xzf ffmpeg-2.6.9.tar.gz
-
3.进入ffmpeg-2.6.9目录创建build_android.sh脚本并打开
touch build_android.sh
vim build_androuid.sh
-
4.编辑脚本(脚本前面几行的路径一定要核对准确)
#!/bin/bash make clean #指向NDK所在路径 export NDK=/ndk_build/android-ndk-r14b #最低兼容版本9路径,9以下有很多不同建议兼容到9 export SYSROOT=$NDK/platforms/android-9/arch-arm/ #指定编译器路径,即ndk中的GCC export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 #指定编译arm平台下的cpu export CPU=arm #编译后文件存放路径(build_androuid.sh所在当前目录/android/arm) export PREFIX=$(pwd)/android/$CPU export ADDI_CFLAGS="-marm" #-------------------------------------- #执行ffmpeg中的configure命令 #target-os=linux在linux环境下编译 #开启动态库--enable-shared \ #禁止静态库--disable-static \ #清除yasm信息--disable-yasm \ #-------------------------------------- ./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
-
5.修改生成文件的后缀名格式:将ffmpeg目录中configure配置文件传输到自己电脑上将第2779-2782行替换成如下格式再替换linux下的configure文件(因为android系统中必须以.so结尾才能运行):
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'
-
6.给整个ffmpeg目录添加可执行权限
chmod 777 -R ffmpeg-2.6.9
-
7.执行编译脚本
./build_androuid.sh
-
8.编译大概需要10-20分钟编译完成后目录如下:
红色标记的8个so就是我们需要在android平台下使用的,不过这样编译出来的是整套未裁剪的so库,8个库总共有12.7M。集成到项目中大多时候我们会选择裁剪ffmpeg。