基于《云服务器Ubuntu基本配置》这篇文章,已经搭建好了云服务器,这篇文章使用Ubuntu编译FFmpeg。html
一、建立NDK
目录,而且上传Linux
版本的NDK
。linux
这里使用的ndk
版本是r10e
。android
二、赋予ndk
文件夹下全部文件的drwx
权限,使其可执行。shell
chmod 777 -R ndk
NDK目录给予权限以后,可看到.bin
文件显示成绿色(可执行)了。vim
三、解压执行.bin
文件bash
到ndk
目录下,./android-ndk-r10e-linux-x86_64.bin
执行文件。服务器
上图显示已经执行完成了。架构
四、环境变量配置ide
使用命令vim ~/.bashrc
进入环境配置文件,添加post
export NDKROOT=/usr/ndk/android-ndk-r10e
export PATH=$NDKROOT:$PATH
复制代码
五、更新环境变量
使用命令source ~/.bashrc
更新环境变量
至此,NDK环境已经搭建好了。
到官网下载FFmpge. zip
。
这里使用FFmpeg 2.6.9
版本。
一、上传文件
使用xftp
上传ffmpeg
压缩包到Ubuntu
。
二、解压FFmpeg
使用命令unzip ffmpeg-2.6.9.zip
解压文件
Xftp查看,显示解压文件
三、编写shell脚本文件
build_android.sh
文件:
#!/bin/bash
make clean
export NDK=/usr/ndk/android-ndk-r10e
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./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
复制代码
注意:
1)换行的时候须要有\,注意不要有额外的空格,不然编译出错
2)脚本文件统一转为UTF-8无BOM格式。可经过note pad++进行转码,或者先由Linux建立文件再由Windows编辑。
3)NDK尽可能不要使用太新的版本,通常使用Android-9便可,不然新版本会出现不兼容的问题。
4)将编写好的shell脚本放在解压后的ffmpeg-2.6.9文件夹中。
指定NDK路径:export NDK=/usr/ndk/android-ndk-r10e; 配置CPU架构类型:export CPU=arm,PREFIX是指定动态库输出的路径,而后disable一些不须要的库(可减少输出的动态库的大小); enable-shared:生成共享库。
四、build_android.sh
给予权限。
显示build_android.sh
没有执行权限。
使用chmod 777 build_android.sh
命令,给予build_android.sh
执行权限。
五、执行文件build_android
使用./build_android.sh
命令执行
报错command not found
没有make命令。安装make:sudo apt-get install make
。
六、安装dos2unix
命令:sudo apt-get install tofrodos
这里的文件是在window下建立的,须要使用dos2unix build_android.sh
命令转换下文件。
说明: 若是出现问题:bad interpreter : No such file or directory,缘由:没有将文件转成Linux编码格式。
转换Linux编码格式有两种方式:
一、在Linux下建立这个文件touch build_android.sh,从Linux传出到桌面把脚本命令拷入这个文件中,上传到Linux;
二、使用 dos2unix build_android.sh 转成Linux编码格式
复制代码
七、再次执行文件build_android
编译:
上图就是编译完成生成动态库。
生成的动态库有.56,.5
的库,这种库Android
很难加载到,咱们须要的是后缀.so
的库,这就须要修改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)'
复制代码
从新编译,生成动态库: