编译环境
Ubuntu16.04 x86_64
Ffmpeg3.4
ndk-r14b
编译前的准备
ubuntu16.04 64位linux
下载ndkubuntu
下载ffmpegbash
查看ubuntu的版本是32位仍是64位编辑器
uname -a
android-ndk须要和ubuntu版本的位数保持一致ide
安装make工具
apt-get install make
安装vimpost
apt-get install vim
编译步骤
1.建立目录
在ubuntu中/home下建立NDK文件夹,将下载好的android-ndk-r14b和ffmpeg3.4放到NDK文件夹
2.解压
解压android_ndk_r14b
tar -jxvf android-ndk-r14b-linux-x86_64.tar.bz2
解压ffmpeg3.4
tar -jxvf ffmpeg-3.4.tar.bz2
3.编写build_android.sh
在ffmpeg-3.4文件夹中建立build_android.sh文件
编写脚本,脚本以下,支持neon和硬解码
#!/bin/bash
NDK=/home/NDK/android-ndk-r14b
#anroid 5.0
PLATFORM=$NDK/platforms/android-21/arch-arm
#交叉编译工具链
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#CPU架构
CPU=armv7-a
#输出路径
PREFIX=./android/$CPU
function buildFfmpeg
{
./configure \
--prefix=$PREFIX \
--target-os=android \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
--cpu=armv7-a \
--sysroot=$PLATFORM \
--extra-cflags="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp" \
--cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
--nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
--enable-shared \
--enable-runtime-cpudetect \
--enable-gpl \
--enable-small \
--enable-cross-compile \
--enable-asm \
--enable-neon \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-hwaccel=h264_mediacodec \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver\
--disable-postproc \
--disable-avdevice \
--disable-symver \
--disable-stripping
make -j16
make install
}
buildFfmpeg
须要将NDK=/mnt/f/ubuntu-workspace/ff/android-ndk-r14b这句替换为你的NDKl路径,如不清楚,能够cd到ndk目录,而后使用pwd命令,便可显示出ndk的路径。
4.编译脚本
chmod +x build_android.sh
./build_android.sh
5.查看头文件和库文件
成功编译完成后会在ffmpeg-3.4/android/文件夹中生成一个armv7-a文件夹,这个文件夹就是咱们所须要的头文件和动态库。
遇到的问题:
由于我是在window中用编辑器建立的build_android.sh,因此遇到了下面这个问题
若是使用./build_android.sh报以下错误
-bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory
这是因为在window编辑build_android.sh的编码格式引发的。
可经过以下操做解决:
查看该文件:vim build_android.sh
查看该错误文件的格式(通常报错的文件格式是DOS):
:set ff
修改该文件格式为UNIX:
:set ff=unix
再保存
:wq