编译安卓平台ffmpeg

1下载

ffmpeg-7.0.2  官网下载即可

NDK下载的r25C;注意有些NDK是包含 -ar 之类的文件的,老的编译方式中是使用到了这些文件的,如:

aarc64-linux-android-nm  -ar -as

如果你使用的是一些老的编译指令,但是使用的是新的NDK,编译可能会出现缺少 *** -ar交叉编译连,对此,可以下载老版本NDK,是包含这些文件的;

如r19C:android-ndk-r19c\toolchains\llvm\prebuilt\linux-x86_64\bin

我们这里直接使用R25C;ffmepg7.0;我主要是想使用硬件编解码

 

在平级目录下创建编译文件   **.sh;然后./sh 会创建一个build 编译

#!/bin/bash

# 指定ndk路径
# 指定交叉编译链
export NDK=/mnt/***/r25c/linux_ndk/android-ndk-r25c
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64

mkdir build
cd build

parentDir=$(dirname "$PWD")

function build_android
{
$parentDir/ffmpeg-7.0.2/configure \
--prefix=$PREFIX \
--disable-postproc \
--disable-debug \
--disable-doc \
--enable-ffmpeg \
--enable-ffplay \
--enable-ffprobe \
--disable-symver \
--disable-doc \
--disable-avdevice \
--disable-shared \
--enable-static \
--disable-vulkan \
--enable-gpl \
--enable-neon \
--enable-hwaccels \
--enable-jni \
--enable-small \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-decoder=mpeg4_mediacodec \
--enable-hwaccel=h264_mediacodec \
--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" 

make clean
make -j8
make install
}

#arm64-v8a 
ARCH=arm64
CPU=armv8-a
API=26
CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
NM=$TOOLCHAIN/bin/llvm-nm
CROSS_PREFIX=$TOOLCHAIN/bin/llvm-  
PREFIX=$(pwd)/androidOut/$CPU
OPTIMIZE_CFLAGS="-march=$CPU"
#注意红色(加粗的两行)的部分是新的NDK使用的;使用老的NDK,红色部分可能要使用这句话  CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-

build_android
echo "=****************** armv8a build end*****************"

 

 编译之后

 

 

posted on 2025-06-09 21:22  邗影  阅读(55)  评论(0)    收藏  举报

导航