clang for Android,【FFmepg】Clang编译ffmpeg android库

Android新版的NDK移除GCC的编译,改为CLANG,FFmpeg的编译脚本也需要相应修改。以下脚本实测通过NDK20没问题。与GCC编译的脚本相比,主要修改点在几个地方:

1.TOOLCHAIN的路径变化,这是最重要的,从gcc的$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64修改到现地址

2.添加了cc和cxx,指定为clang编译,至于API的支持版本网上有,不要太低都能支持的

3.OPTIMIZE_CFLAGS里面-DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD宏的目的是解决一些系统函数编译时提示mismatch,千万不要删除

4.可以修改的地方是disable和enable的各种功能,根据自己项目实际开发需要对库进行缩减

5.ARCH和CPU也是根据自己项目进行修改,不全部列举

【提个问】NDK20b和NDK14b编译出来的ffmpeg库在工程设置为NDK14的项目都可以正常运作,当工程的NDK设为20的时候,ffmpeg解码同样的音频流会出现两种格式?

#!/bin/bash

export NDK=/home/Android/android-ndk-r20b

TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/

API=21

#armv7-a

ARCH=arm

CPU=armv7-a

CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang

CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++

SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot

CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU -DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD"

echo "Compiling FFmpeg for $CPU"

./configure \

--prefix=$PREFIX \

--disable-asm \

--enable-neon \

--enable-hwaccels \

--enable-shared \

--enable-jni \

--enable-mediacodec \

--enable-decoders \

--disable-encoders \

--enable-postproc\

--enable-demuxers \

--enable-muxers \

--enable-parsers \

--enable-protocols \

--enable-decoder=h264_mediacodec \

--enable-hwaccel=h264_mediacodec \

--enable-gpl \

--disable-bsfs \

--disable-indevs \

--disable-outdevs \

--disable-filters \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--enable-avdevice \

--disable-symver \

--disable-ffserver \

--cross-prefix=$CROSS_PREFIX \

--target-os=android \

--arch=$ARCH \

--cpu=$CPU \

--cc=$CC \

--cxx=$CXX \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS" \

$ADDITIONAL_CONFIGURE_FLAG

make clean

make -j4

make install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值