Android集成ffmpeg(一,Linux平台下编译ffmpeg)

据说重要的事情药说三遍:文章只代表个人见解!文章只代表个人见解!文章只代表个人见解!有些地方可能有错误的地方,敬请见谅!有不同见解请加QQ: 498099780 ;望多多指正!

一、准备环境

1、centos7.3(本人使用版本),windows系统可以装VMware虚拟机(不会的自己百度搜索把),本人用的是finalShell工具链接的虚拟机。

2、ndk17(放到Linux平台下)

    解压

    unzip android-ndk-r17c-linux-x86_64.zip

    如果出现:

   unzip: 未找到命令

    安装命令:

    yum install -y unzip zip

3、FFmpeg(安装Linux系统上)

    解压命令:

    tar -xf FFmpeg-n4.0.2.tar.gz

4、配置Linux环境变量

    打开 /etc/profile 文件配置环境ndk环境变量:

    export NDK_ROOT=/android_ndk/android-ndk-r17c  #配置你自己解压的路径,这个是我的路径

    export PATH=$NDK_ROOT:$PATH

二、编写shell脚本

#!/bin/bash

#根据自己的路径配置

NDK_ROOT=/android_ndk/android-ndk-r17c

#toolchain 变量指向ndk中的交叉编译gcc所在的目录

TOOLCHAIN=$NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64

#FLAGS与INCLUDES变量 可以从AS ndk工程的.externativeBuild/cmake/debug/armeabi-v7a/build.ninja中拷贝

FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv8-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -O0 -fPIC"

INCLUDES="-isystem $NDK_ROOT/sources/cxx-stl/llvm-libc++/include -isystem $NDK_ROOT/sources/android/support/include -isystem $NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include"

# 执行configure脚本,用于生成makefile

#--prefix :安装目录

#--enable-small:优化大小

#--isable-programs:不编译ffmpeg可执行程序,我们需要获得静态(动态)库

#--disable-avdevice:关闭avdevice模块,此模块在android中无用

#--disable-encoderrs:关闭所有的编码器,只需要播放decoder即可。

#--disable-muxers:没有推流无需muxer模块(复用器,封装器),不需要生成mp4这种文件,所以关闭

#--disable-filters:关闭视频滤镜

#--enable-cross-compile:开启交叉编译(ffmpeg比较**跨平台**,并不是所有库都有这么happy的选项)

#--cross-prefix:ndk的特定gcc编译器前缀

#--disable-shared enable-static: 不写也可以,默认就是这样的

#--sysroot

#--extra-cflags

#--arch --target-os

#

#

PREFIX=./android/arm64-v7a #可以根据自己的配置

./configure \

--prefix=$PREFIX \

--enable-small \

--disable-programs \

--disable-avdevice \

--disable-encoders \

--disable-muxers \

--disable-filters \

--enable-cross-compile \

--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-androideabi- \

--enable-shared \

--disable-static \hjjjkkj

--sysroot=$NDK_ROOT/platforms/android-21/arch-arm64 \

--extra-cflags="$FLAGS $INCLUDES" \

--extra-cflags="-isysroot $NDK_ROOT/sysroot" \

--arch=aarch64 \

--target-os=android

make clean

make

make install

   将脚本 .sh 文件放再解压的ffmpeg的跟目录再执行。

目录结构

三、执行完毕脚本

    看到以下目录证明你已经编译成功

执行完毕根据自己的配置

    将目录copy到你的电脑上(本人用finalshell工具,很方便)。

如果执行过程中遇见问题可以一起讨论,本人也是一枚小白! QQ:498099780 

你可能感兴趣的:(Android集成ffmpeg(一,Linux平台下编译ffmpeg))