ffmpeg在arm64下编译

最近项目要求对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


打完收工。

您好!编译FFmpeg4.4为arm架构的步骤如下: 1. 下载交叉编译工具链 您可以在交叉编译工具链的官网下载到针对arm架构的工具链,比如我们可以下载arm-linux-gnueabi工具链,下载完成后解压到某个目录下。 2. 下载FFmpeg源代码 您可以在FFmpeg官网下载到最新的源代码,下载完成后解压到某个目录下。 3. 配置编译参数 进入FFmpeg源代码目录,执行以下命令: ``` ./configure --prefix=/usr/local --enable-shared --disable-static --arch=arm --target-os=linux --cross-prefix=/path/to/arm-linux-gnueabi/bin/arm-linux-gnueabi- --sysroot=/path/to/sysroot --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-avfilter --enable-avresample --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libx264 --enable-libx265 --enable-libvpx --enable-libaom --enable-libsvtav1 ``` 其中,--prefix表示安装目录,--enable-shared表示生成动态链接库,--disable-static表示禁止生成静态链接库,--arch表示目标架构,--target-os表示目标操作系统,--cross-prefix表示交叉编译工具链的前缀,--sysroot表示系统根目录,--enable-gpl表示允许使用GPL协议,--enable-version3表示使用版本3,--enable-nonfree表示允许使用非自由软件,--enable-postproc表示启用后处理模块,--enable-avfilter表示启用多媒体过滤器,--enable-avresample表示启用音频重采样,--enable-libfdk-aac表示启用FDK AAC编解码器,--enable-libmp3lame表示启用MP3编解码器,--enable-libopus表示启用Opus编解码器,--enable-libvorbis表示启用Vorbis编解码器,--enable-libx264表示启用x264编解码器,--enable-libx265表示启用x265编解码器,--enable-libvpx表示启用VP8/VP9编解码器,--enable-libaom表示启用AV1编解码器,--enable-libsvtav1表示启用SVT-AV1编解码器。 4. 编译安装 执行以下命令进行编译和安装: ``` make -j4 make install ``` 其中,-j4表示使用4个线程进行编译,可以根据实际情况进行调整。 编译完成后,您就可以在指定的安装目录下找到生成的动态链接库和可执行文件了。 希望以上内容可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值