Android引入ffmpeg

交叉编译:

通过生成工具链方式:
ndk下载地址:
https://developer.android.google.cn/ndk/downloads
下载linux版本解压至对应目录

使用ndk下的make-standalone-toolchain脚本进行工具链的生成,路径位于:ndk/{ndk版本}/build/tools/make-standalone-toolchain.sh
脚本关键参数:
--toolchain=arm-linux-androideabi-4.9 (指定编译工具链版本?去哪查看版本)
--platform=android-19(指定sdk平台最低支持版本)
--install-dir=../toolchain(指定工具链要生成的目录)

#将脚本设置为可执行
chmod +x  make-standalone-toolchain.sh
sudo ./make-standalone-toolchain.sh  --platform=android-19  --install-dir=ndktoolchain

执行完毕后,就会将所有相关的文件编译到当前目录下的ndktoolchain里

image.png

创建编译脚本build_ffmpeg.sh:
vim build_ffmpeg.sh

#!/bin/sh
#在下载的ffmpeg目录下执行该脚本,最终输出至该目录下的android-build目录
PREFIX=android-build
#修改为自己的ndk路径:即之前生成的工具链目录路径
NDK_HOME=/home/yy19920402/android-ndk-r22/build/tools/ndktoolchain

COMMON_OPTIONS="\
    --prefix=android/ \
    --target-os=android \
    --disable-static \
    --enable-shared \
    --enable-small \
    --disable-programs \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-doc \
    --disable-symver \
    --disable-asm \
    "

function build_android {
#目前android主流平台式armeabi-v7a架构的处理器
    ./configure \
    --libdir=${PREFIX}/libs/armeabi-v7a \
    --incdir=${PREFIX}/includes/armeabi-v7a \
    --pkgconfigdir=${PREFIX}/pkgconfig/armeabi-v7a \
    --arch=arm \
    --cpu=armv7-a \
    --cross-prefix="${NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/arm-linux-androideabi-" \
    --sysroot="${NDK_HOME}/platforms/android-19/arch-arm/" \
    --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/arm64-v8a \
    --incdir=${PREFIX}/includes/arm64-v8a \
    --pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \
    --arch=aarch64 \
    --cpu=armv8-a \
    --cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-21/arch-arm64/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS} 
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/x86 \
    --incdir=${PREFIX}/includes/x86 \
    --pkgconfigdir=${PREFIX}/pkgconfig/x86 \
    --arch=x86 \
    --cpu=i686 \
    --cross-prefix="${NDK_HOME}/toolchains/x86-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/i686-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-19/arch-x86/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS} 
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/x86_64 \
    --incdir=${PREFIX}/includes/x86_64 \
    --pkgconfigdir=${PREFIX}/pkgconfig/x86_64 \
    --arch=x86_64 \
    --cpu=x86_64 \
    --cross-prefix="${NDK_HOME}/toolchains/x86_64-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/x86_64-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-21/arch-x86_64/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

};

build_android

接着执行脚本,生成交叉编译出来的库文件:

chmod +x  build_ffmpeg.sh
./build_ffmpeg.sh 

最终在下载的ffmpeg/android_build中生成结果

Android下ffmpeg的引入:

你可能感兴趣的:(Android引入ffmpeg)