android7动态链接,ffmpeg android 编译动态链接库

1. 交叉编译 ffmpeg -> aarch64

1.1参数说明:

--cross-prefix 指定交叉编译工具链路径

--arch 指定cpu指令集架构

--target-os 目标系统 linux

--cc c 编译器 默认:cc 这里指定clang google官方已经在ndk去掉了gcc

--enable-cross-compile 开启交叉编译

--disable-static 关闭静态编译

--enable-shared 开启shared表示编译动态链接库

--disable-ffmpeg 不开启ffmpeg 模块

--disable-ffplay 不开启ffplay 播放器模块

--disable-ffprobe 不开启ffprobe 音视频分析模块

1.2设置环境变量

export NDK_ROOT=/mnt/e/WorkRoom/ubuntu/android-ndk-r22b/toolchains/llvm/prebuilt/linux-x86_64

export SYSROOT=$NDK_ROOT/sysroot

1.3 执行 ./configure

需要注意:新版本ndk工具链取消了gcc编译器,默认编译器是clang,配置项目里面需要指定c/c++ 编译器

--cc=$NDK_ROOT/bin/armv7a-linux-androideabi21-clang

--cxx=$NDK_ROOT/bin/armv7a-linux-androideabi21-clang++

完整的编译参数如下:

small@small:~$ ./configure \

--prefix=/mnt/e/WorkRoom/ffmpeg/ffarm \

--arch=arm \

--target-os=android \

--enable-cross-compile \

--disable-shared \

--enable-static \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-doc \

--disable-avdevice \

--disable-symver \

--sysroot=$SYSROOT \

--cross-prefix=$NDK_ROOT/bin/arm-linux-androideabi- \

--extra-cflags="-I$SYSROOT/usr/include" \

--extra-ldflags="-L$SYSROOT/usr/lib" \

--cc=$NDK_ROOT/bin/armv7a-linux-androideabi21-clang \

--nm=$NDK_ROOT/bin/arm-linux-androideabi-nm \

--cxx=$NDK_ROOT/bin/armv7a-linux-androideabi21-clang++

附上完整脚本:

#!/bin/bash -v

echo "ffmpeg start"

NDK_ROOT=/mnt/e/WorkRoom/ubuntu/android-ndk-r22b/toolchains/llvm/prebuilt/linux-x86_64

SYSROOT=$NDK_ROOT/sysroot

function build {

./configure \

--prefix=$PREFIX \

--arch=$ARCH \

--cpu=$CPU \

--target-os=android \

--sysroot=$SYSROOT \

--cross-prefix=$CROSS_PREFIX \

--extra-cflags="-I$SYSROOT/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp " \

--extra-ldflags="-L$SYSROOT/usr/lib" \

--cc=$CC \

--nm=$NM \

--cxx=$CXX \

--enable-runtime-cpudetect \

--enable-neon \

--enable-shared \

--enable-asm \

--disable-static \

--enable-cross-compile \

--enable-small \

--enable-jni \

--enable-mediacodec \

--enable-gpl \

--enable-decoder=h264_mediacodec \

--disable-doc \

--disable-debug \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-postproc \

--disable-avdevice \

--disable-symver \

--disable-stripping

make -j8

make install

make clean

echo "ffmpeg complete!!!"

}

echo "ffmpeg armv7 start"

PREFIX="/mnt/e/WorkRoom/ffmpeg/armv7"

ARCH=arm

CPU=armv7-a

CROSS_PREFIX=$NDK_ROOT/bin/arm-linux-android-

CC=$NDK_ROOT/bin/armv7a-linux-androideabi21-clang \

NM=$NDK_ROOT/bin/arm-linux-androideabi-nm \

CXX=$NDK_ROOT/bin/armv7a-linux-androideabi21-clang++ \

build

echo "ffmpeg armv8 start"

PREFIX="/mnt/e/WorkRoom/ffmpeg/armv8"

ARCH=aarch64

CPU=armv8

CROSS_PREFIX=$NDK_ROOT/bin/aarch64-linux-android-

CC=$NDK_ROOT/bin/aarch64-linux-android21-clang

NM=$NDK_ROOT/bin/aarch64-linux-android-nm

CXX=$NDK_ROOT/bin/aarch64-linux-android21-clang++

build

里面的一些文件路径改成自己的就可以了!

编译完就是这几个文件了:

libavcodec.so libavfilter.so libavformat.so libavutil.so libswresample.so libswscale.so

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值