你的位置:首页 > 操作系统

[操作系统]NDK编译FFMpeg[Linux]



     最近在研究视频直播相关的技术,了解到了FFmpeg,就在网上查看如何将FFmpeg移植到Android中,查了几天,看的东西不少,就是没有一个可以完全移植成功的,最后通过产看各种资料,结合网上的资料,终于把FFmpeg给搞定了。在此记录一下。

整体构思:

在Centos7.5下搭建NDk编译环境,编译FFmpeg库,生成Android所需要的库文件,然后在Android中使用

准备工作:

1、在虚拟机中安装Centos系统

2、下载NDK

linux 32 bit
http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86.bin
linux 64 bit
http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin

3、下载FFmpeg源码

下载地址:http://www.ffmpeg.org/download.html

在Centos /usr/local下新建文件夹ndk,将android-ndk-r10d-linux-x86_64.bin和FFmpeg源码上传改该文件夹。

clip_image002

一、安装

1、安装NDK

[root@localhost /]# cd /usr/local/ndk

[root@localhost ndk]# chmod a+x android-ndk-r10d-linux-x86_64.bin

执行上面操作,设置为可执行文件,然后执行./android-ndk-r10d-linux-x86_64.bin安装NDK

安装完成后会在当前目录生成对应的文件夹

clip_image004

2、安装dos2unix

yum install dos2unix
dos2unix **.sh

如果不安装dos2unix,编译时会报下面的错误:

$'\r': 未找到命令

未预期的符号 `$'{\r'' 附近有语法错误

clip_image006

3、安装gcc及c++

yum install gcc-c++

如果不安装会报下面截图的错误

clip_image008

4、 安装yasm

# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar zxvf yasm-1.3.0.tar.gz
# cd yasm-1.3.0
# ./configure
# make && make install

经过以上步骤,环境就配置好了,下面就开始编译FFmpeg

5、 编译FFmpeg

[root@localhost ffmpeg]# cd /usr/local/ndk/ffmpeg

[root@localhost ffmpeg]# vi config_android.sh

将下面的脚本复制进去

NDK=/usr/ndk/android-ndk-r10d

SYSROOT=$NDK/platforms/android-9/arch-arm/

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64

function build_one

{

./configure \

--prefix=$PREFIX \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-avdevice \

--disable-doc \

--disable-symver \

--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

}

CPU=arm

PREFIX=$(pwd)/android/$CPU

ADDI_CFLAGS="-marm"

build_one

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NDK为NDK的安装路径

编译FFmpeg

[root@localhost ffmpeg]# chmod a+x *

[root@localhost ffmpeg]# ./config_android.sh

这个过程如果不报错,就会等很长一段时间,等待结束后ffmpeg文件夹下会多出一个android文件夹,里面包含了ffmpeg的.so文件和头文件

clip_image010 

clip_image012

clip_image014

我们只需要把android这个文件夹拷贝到windows环境下即可!

至此,ffmpeg已经编译完成

下一篇主要记录下在android开发中如何使用