1、进入linux,下面我基本都在/home目录下(当然也可以在其它目录),这个纠结没卵用。 2、mkdir ffmpeg 创建一个文件夹,后面文件就都放进来 3、把上面的FFmpeg源码包和ndk包复制到这个目录下面,可以使用WinSCP等工具。 4.1、首先安装ndk13,不过与其说安装不如说是解压(linux系统- -),解压命令为 unzip android-ndk-r13-linux-x86_64.zip ,unzip后面跟的是文件名字。 4.2、等待了几分钟(机器性能决定),包解压好了。下图所示: 4.3 下一步需要配置环境变量,这个跟java在window配置环境变量是同一回事(为了能找到这个程序运行)。 4.3.1、Vim工具少用,记不住指令,这里使用了简单的nano工具,这个挺好用的,编辑都挺方便。 命令:nano ~/.bashrc (bashrc 这个是环境配置的东西)。 4.3.2、把环境变量加上: export NDK=/home/ffmpeg/android-ndk-r13(解压的路径) export PATH=${PATH}:$NDK (不需要改) ^就是ctrl + 的意思,^V 就是ctrl + v 组合键,按到最后,把环境变量加上去 按 ctrl + o 保存,ctrl + x退出。 4.3.3、命令:source ~/.bashrc 刷新环境变量 4.3.4、检查 NDK是否安装成功 命令:ndk-build -v 如果出现:ERROR:Cannot find ‘make’ program.Please install make package or define the GNUMAKE variable to point to it. 这个是你系统没有安装 make,命令:apt-get install make 安装即可,至此 NDK安装完成。 5.1、把FFmpeg解压,命令:tar -vxf ffmpeg-3.3.2.tar.bz2 ,这个解压速度很快 5.2、现在开始配置FFmpeg,配置生成安卓的so库,进入ffmpeg目录,绿色的configure就是配置文件 5.2.1、编辑配置文件:使用ctrl + w 快速找到SLIBNAME_WITH_MAJOR 这里需要把
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)'至于为什么要改成这样,网上都说是为了生成android的so文件,不这样的话,会生成其他东西,这里改成这样就完事了,喜欢可以纠结。 改完,保存,然后退出就行。
6.1、一种脚本只能成功一种类型的abi的,下面就是比较通用的armeabi脚本
#!/bin/bash export TMPDIR=/home/ffmpeg/tmpdir #临时目录路径,编译文件的缓存目录 NDK=/home/ffmpeg/android-ndk-r13 #ndk的路径 SYSROOT=$NDK/platforms/android-14/arch-arm/ #编译最小兼容到的android api版本,我这个是兼容到api 14. TOOLCHAIN=/home/ffmpeg/android-ndk-r13/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 #toolchains是工具链,我这里是编译arm肯定要找arm,如果x86就选x86的目录路径 CPU=arm # 指定是arm指令集 下面的arch=arm也是这个意思 PREFIX=/home/ffmpeg/output_arm #编译文件的输出目录 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_FLAG make clean make make install } build_one6.2、脚本搞好就把他防盗ffmpeg目录下面: 脚本文件名字是build_android_arm.sh 和 build_android_x86.sh 此时是灰色的也就是没有执行权限,简单粗暴命令: chmod 777 build_android_arm.sh 和 chmod 777 build_android_x86.sh,加上全权限:
生成的文件不知道为何有软连接的,我也搞不懂,蓝色相当于window系统的快捷链接,不过也没影响,不要就是了,知道了可以留言。
其他脚本:https://github.com/RoyGuanyu/build-scripts-of-ffmpeg-x264-for-android-ndk
