Android NDK交叉编译FFmpeg

1. 下载FFMPEG
      http://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2icon-default.png?t=LBL2http://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2

2. 解压ffmpeg-4.2.2.tar.bz2

   $ tar xvjf ffmpeg-4.2.2.tar.bz2

3. 下载NDK

    镜像下载路径:NDK 下载  |  Android NDK  |  Android Developers

   

 4. 修改configure

configre默认是gcc编译.

但是新的ndk都是clang

修改如下://默认改为clang 以及 clang++

5. 编写编译脚本

 

#!/bin/bash
###################################
#### build script for FFMPEG
#### url:
#### Date: 2021-12-28
#### Author: Tim
###################################

# ndk for linux https://developer.android.google.cn/ndk/downloads?hl=zh-cn
NDKROOT_PATH=/home/xxxx/workspace/tools/android-ndk-r23b

# current dir
CURRENT_PATH=$(pwd)
PREFIX=$CURRENT_PATH/out/

# Configure and build.
# Only choose one of these, depending on your build machine...
export TOOLCHAIN=$NDKROOT_PATH/toolchains/llvm/prebuilt/linux-x86_64
# Only choose one of these, depending on your device...
export TARGET=aarch64-linux-android
#export TARGET=armv7a-linux-androideabi
# Set this to your minSdkVersion.
export API=28

PREBUILT_TOOL_ARM64V8A_PATH=$TOOLCHAIN/bin/$TARGET$API-clang
PREBUILT_TOOL_ARM64V8A_PATH_AR=$TOOLCHAIN/bin/llvm-ar
PREBUILT_TOOL_ARM64V8A_PATH_CLANG=$TOOLCHAIN/bin/$TARGET$API-clang
PREBUILT_TOOL_ARM64V8A_PATH_CLANG_PLUS=$TOOLCHAIN/bin/$TARGET$API-clang++

if [ ! -f $TOOLCHAIN/bin/$TARGET$API-ar ];then
ln -s $TOOLCHAIN/bin/llvm-ar $TOOLCHAIN/bin/$TARGET$API-ar
fi

if [ ! -f $TOOLCHAIN/bin/$TARGET$API-nm ];then
ln -s $TOOLCHAIN/bin/llvm-nm $TOOLCHAIN/bin/$TARGET$API-nm
fi

if [ ! -f $TOOLCHAIN/bin/$TARGET$API-ranlib ];then
ln -s $TOOLCHAIN/bin/llvm-ar $TOOLCHAIN/bin/$TARGET$API-ranlib
fi

GENERAL_64BIT="\
   --enable-cross-compile \
   --arch=aarch64 \
   --cpu=armv8-a \
   --cross-prefix=$TOOLCHAIN/bin/$TARGET$API-"
 
GENERAL_32BIT="\
   --enable-cross-compile \
   --arch=arm \
   --cross-prefix=$TOOLCHAIN/bin/$TARGET$API-"
 
MODULES="\
   --disable-avdevice \
   --disable-filters \
   --disable-programs \
   --disable-network \
   --disable-avfilter \
   --disable-postproc \
   --disable-encoders \
   --disable-protocols \
   --disable-hwaccels \
   --disable-doc"
 
VIDEO_DECODERS="\
   --enable-decoder=h264 \
   --enable-decoder=mpeg4 \
   --enable-decoder=mpeg2video \
   --enable-decoder=mjpeg \
   --enable-decoder=mjpegb"
 
AUDIO_DECODERS="\
    --enable-decoder=aac \
    --enable-decoder=aac_latm \
    --enable-decoder=atrac3 \
    --enable-decoder=atrac3p \
    --enable-decoder=mp3 \
    --enable-decoder=pcm_s16le \
    --enable-decoder=pcm_s8"
  
DEMUXERS="\
    --enable-demuxer=h264 \
    --enable-demuxer=m4v \
    --enable-demuxer=mpegvideo \
    --enable-demuxer=mpegps \
    --enable-demuxer=mp3 \
    --enable-demuxer=avi \
    --enable-demuxer=aac \
    --enable-demuxer=pmp \
    --enable-demuxer=oma \
    --enable-demuxer=pcm_s16le \
    --enable-demuxer=pcm_s8 \
    --enable-demuxer=wav"
 
VIDEO_ENCODERS="\
	  --enable-encoder=huffyuv \
	  --enable-encoder=ffv1 \
	  --enable-encoder=mjpeg"
 
AUDIO_ENCODERS="\
	  --enable-encoder=pcm_s16le"
 
MUXERS="\
  	  --enable-muxer=avi"
 
PARSERS="\
    --enable-parser=h264 \
    --enable-parser=mpeg4video \
    --enable-parser=mpegaudio \
    --enable-parser=mpegvideo \
    --enable-parser=aac \
    --enable-parser=aac_latm"
 
 
function build_ARM64
{
./configure --target-os=linux \
    --prefix=${PREFIX} \
    ${GENERAL_64BIT} \
    --extra-cflags=" -O3 -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 " \
    --disable-shared \
    --enable-static \
    --enable-zlib \
    --disable-everything \
    ${MODULES} \
    ${VIDEO_DECODERS} \
    ${AUDIO_DECODERS} \
    ${VIDEO_ENCODERS} \
    ${AUDIO_ENCODERS} \
    ${DEMUXERS} \
    ${MUXERS} \
    ${PARSERS}
make clean
make install
}

build_ARM64







  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android 上使用 FFmpeg 可以提供丰富的音视频处理能力,如视频解码、编码、剪辑、滤镜等等。下面是在 Ubuntu 环境下交叉编译 FFmpeg,生成 Android 平台可用的库文件。 1. 下载 Android NDK 首先,需要下载 Android NDK,从官网 https://developer.android.com/ndk/downloads 下载最新版本的 NDK,并解压到某个目录下。 2. 安装编译工具链 在 Ubuntu 环境下,使用以下命令安装交叉编译工具链: ``` sudo apt-get update sudo apt-get install build-essential sudo apt-get install libtool sudo apt-get install automake sudo apt-get install autoconf sudo apt-get install cmake sudo apt-get install pkg-config sudo apt-get install texinfo sudo apt-get install nasm sudo apt-get install yasm ``` 3. 下载 FFmpeg 源代码 从官网 https://ffmpeg.org/download.html 下载最新版本的 FFmpeg 源代码,并解压到某个目录下。 4. 编写交叉编译脚本 在 FFmpeg 源代码目录下,新建一个 build_android.sh 文件,内容如下: ```bash #!/bin/bash NDK=/path/to/android-ndk SYSROOT=$NDK/platforms/android-21/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 function build_one { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffplay \ --disable-ffprobe \ --disable-ffmpeg \ --disable-debug \ --disable-avdevice \ --disable-postproc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村里小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值