ffmpeg在arm64下编译

来源:互联网 发布:桌面网络图标不见了 编辑:程序博客网 时间:2024/06/01 23:41

最近项目要求对ffmpeg在arm64下进行编译。发现原来在arm64下编译是多么的麻烦。其实真正的麻烦是在使用baidu搜索搜的东西基本都可以忽略。没有一个内容是可用的。明显的是对--arch都无法给到准确的值。


1 编译准备

ndk使用的是12b。支持到platform-24。顺便提下该版本尤其增强了安全性检查,尤其是TEXTREL的检查。同时也对许多的系统inline函数进行了最新实现。导致原来可以正常编译的项目,现在无法通过,不是缺少这个函数就是缺少那个函数。目前个人的临时解决方法就是使用platform-19或则将19中的一些头文件替换到24.哈哈。

2 ffmpeg编译开始

ffmpeg需要在指定官方网站下载。这个可以通过baidu轻松找到。我仅仅需要264的解码功能,所以将一些不需要的进行了disable。

编译指令如下:

mkdir -p ./build/android

chmod 777 ./configure
chmod 777 ./version.sh

export ARM_ROOT=$ANDROID_NDK_ROOT
export ARM_INC=$ARM_ROOT/platforms/android-23/arch-arm64/usr/include/
export ARM_LIB=$ARM_ROOT/platforms/android-23/arch-arm64/usr/lib
export ARM_TOOL=$ARM_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
export ARM_LIBO=$ARM_TOOL/lib/gcc/aarch64-linux-android/4.9.x
export PATH=$ARM_TOOL/bin:$PATH
export ARM_PRE=arm-linux-androideabi

CC=$ARM_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin

./configure \
--target-os=linux \
--arch=aarch64 \
--enable-cross-compile \
--sysroot=$ARM_ROOT/platforms/android-23/arch-arm64 \
--cross-prefix=$ARM_TOOL/bin/aarch64-linux-android- \
--cc=$ARM_TOOL/bin/aarch64-linux-android-gcc \
--nm=$ARM_TOOL/bin/aarch64-linux-android-nm \
--extra-cflags="-fvisibility=hidden -fdata-sections -ffunction-sections -Os -fPIC -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300" \
--enable-asm \
--disable-yasm \
--enable-static \
--disable-shared \
--enable-small \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--enable-neon \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--disable-avdevice \
--disable-avformat \
--disable-postproc \
--disable-avfilter \
--disable-pthreads \
--disable-network \
--disable-swscale-alpha \
--disable-swscale \
--enable-fft \
--enable-mdct \
--disable-rdft \
--disable-dxva2 \
--disable-encoders \
--disable-decoders \
--disable-hwaccels \
--disable-muxers \
--disable-demuxers \
--disable-parsers \
--disable-bsfs \
--disable-protocols \
--disable-indevs \
--disable-outdevs \
--disable-filters \
--disable-debug \
--disable-stripping \
--disable-armv5te \
--disable-armv6 \
--disable-armv6t2 \
--enable-decoder=h264 \
--disable-doc \
--enable-pic

# build for arm64
make clean
make
# copy out the armv8 libs
mkdir ./build/android/armv8
cp -f ./libavcodec/libavcodec.a ./build/android/armv8/libavcodec.a
cp -f ./libavutil/libavutil.a ./build/android/armv8/libavutil.a


打完收工。

0 0
原创粉丝点击