云服务器Ubuntu下搭建NDK环境,并编译FFmpeg

2018-01-06 11:05:04来源:https://juejin.im/post/5a30f7a26fb9a0452b493b2a作者:稀土掘金人点击

分享

基于 《云服务器Ubuntu基本配置》 这篇文章,已经搭建好了云服务器,这篇文章使用Ubuntu编译FFmpeg。


搭建NDK环境

1、创建 NDK 目录,并且上传 Linux 版本的 NDK 。





这里使用的 ndk 版本是 r10e 。


2、赋予 ndk 文件夹下所有文件的 drwx 权限,使其可执行。





chmod 777 -R ndk NDK目录给予权限之后,可看到 .bin 文件显示成绿色(可执行)了。


3、解压执行 .bin 文件


到 ndk 目录下, ./android-ndk-r10e-linux-x86_64.bin 执行文件。





上图显示已经执行完成了。


4、环境变量配置


使用命令 vim ~/.bashrc 进入环境配置文件,添加


export NDKROOT=/usr/ndk/android-ndk-r10e
export PATH=$NDKROOT:$PATH



5、更新环境变量


使用命令 source ~/.bashrc 更新环境变量





至此,NDK环境已经搭建好了。


编译FFmpeg

到 官网 下载 FFmpge. zip 。











这里使用 FFmpeg 2.6.9 版本。


1、上传文件


使用 xftp 上传 ffmpeg 压缩包到 Ubuntu 。





2、解压FFmpeg


使用命令 unzip ffmpeg-2.6.9.zip 解压文件





Xftp查看,显示解压文件





3、编写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:生成共享库。


4、 build_android.sh 给予权限。





显示 build_android.sh 没有执行权限。


使用 chmod 777 build_android.sh 命令,给予 build_android.sh 执行权限。





5、执行文件 build_android


使用 ./build_android.sh 命令执行





报错 command not found 没有make命令。安装make: sudo apt-get install make 。


6、安装 dos2unix


命令: sudo apt-get install tofrodos


这里的文件是在window下创建的,需要使用 dos2unix build_android.sh 命令转换下文件。





说明: 如果出现问题:bad interpreter : No such file or directory,原因:没有将文件转成Linux编码格式。


转换Linux编码格式有两种方式:


1、在Linux下创建这个文件touch build_android.sh,从Linux传出到桌面把脚本命令拷入这个文件中,上传到Linux;
2、使用 dos2unix build_android.sh 转成Linux编码格式

7、再次执行文件 build_android


编译:








上图就是编译完成生成动态库。


生成的动态库有 .56,.5 的库,这种库 Android 很难加载到,我们需要的是后缀 .so 的库,这就需要修改configure文件。


修改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)'

重新编译,生成动态库:





最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台