在 linux 下 利用 NDK 编译 ffmpeg (android 平台下使用 so)

1、下载 ndk (特定版本)
可能是由于 ndk 版本的问题,目前比较新的版本 21 或者 16b 或者 18b 等等 都会出现这样或者那样的问题(哪些问题,会在最后列出),没有找出解决方法,目前 能编译完全没有错误的版本 是14b,所以现在 用 14b 编译

下载页面:https://developer.android.google.cn/ndk/downloads/
赋值 下载链接(linux版本)(最好在 linux 下载)
https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
进入linux 系统:

mkdir ndk_build
cd ndk_build
wget https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip
unzip android-ndk-r21-linux-x86_64.zip

配置NDK

vim ~/.bashrc #进入环境变量配置
export NDKROOT=/home/adminuser/ndk_build/android-ndk-r21 #配置你的安装路径
export PATH=$NDKROOT:$PATH #配置路径
:wq! #保存退出
source ~/.bashrc #执行环境变量
ndk-build #查看是否安装成功,只要不是显示ndk-build not found,则表示安装成功

2、下载 ffmpeg(特定版本)

注意:可能是由于 ffmpeg 版本的问题,目前比较新的版本 4.2 或者 4.2.3 或者 4.1.1 等等 都会出现这样或者那样的问题(哪些问题,会在最后列出),没有找出解决方法,目前 能编译完全没有错误的版本 是 2.6.9 和 2.7.7,所以现在 用 2.6.9 编译

wget https://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gz
tar -jxvf ffmpeg-2.6.9.tar.gz
cd ffmpeg-2.6.9.tar.bz2
vim  android_build.sh

在 android_build.sh 文件中输入以下内容:


#!/bin/bash
make clean
#export TMPDIR="/root/ndk-build/ffmpeg-4.2.3/ffmpegtemp" #ffmpegtemp 需要提前手动创建
export NDK=/root/ndk-build/android-ndk-r14b
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

3、修改configure中的代码:
将下面的代码:

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

替换成:

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

4、执行以下命令:

chmod +x android_build.sh
./android_build.sh

编译其他版本的ffmpeg 出现 的错误如下:
1)
/home/adminuser/ndk-build/android-ndk-r21/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc is unable to create an executable file.
C compiler test failed.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值