win10下 ffmpeg 编译成android可以使用的so文件

前两天看一个视频转换成gif的软件。用起来很不舒服,然后呢就想自己做一个看看。就开始研究ffmpeg,第一步编译成so文件就把我搞得死去活来的,主要是一点经验也没有,然后就是各种失败,最后总算出来,发现这两天忙项目,都快忘记了,今天写一下做下记录。

需要准备下载的东西

MinGW下载安装

mingw 下载地址。下载完双击下一步下一步就好。但是要记住的你的安装地址,等会要配置。

下载完打开,把下图这些全部安装了。

image

环境配置path下面

image

双击打开msys.bat等会要用到。

image

ffmpeg下载最新的就好,我下载的是ffmpeg-4.4.1,往下一拖就看见了

NDK 以前用android studio安装过了,也可以不用下载,但是要用20+的版本,好像是17+以上的就可以,主要涉及到了编译文件的区别。后面说一下。

ffmpeg开始编译

1.修改ffmpeg的configure文件

地址看下图。直接拖动到android studio中就好。

image

--cross-prefix-clang=PREFIX use PREFIXfor compilation clang tools [$cross_prefix]

image

cross_prefix_clang

image


ar_default="${cross_prefix}${ar_default}"

cc_default="${cross_prefix_clang}${cc_default}"

cxx_default="${cross_prefix_clang}${cxx_default}"

nm_default="${cross_prefix}${nm_default}" 

image

完事,根据图复制对应的就好了,行数也差不多。

2编写build_android.sh文件

在configure同目录下新建build_android.sh文件,直接拖到android studio,复制下面代码,修改NDK参数,其他不变。


NDK=D:/sdk/ndk/21.1.6352462

SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot

PLATFORM=$NDK/toolchains/llvm/prebuilt/windows-x86_64

function build

{

./configure\

--prefix=$PREFIX \

--target-os=android \

--arch=$CPU \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-avdevice \

--disable-symver \

--enable-cross-compile \

--sysroot=$SYSROOT \

--cross-prefix=$PLATFORM/bin/arm-linux-androideabi- \

--cross-prefix-clang=$PLATFORM/bin/armv7a-linux-androideabi16- \

--extra-cflags="-I$SYSROOT/usr/include"\

--extra-ldflags="-L$SYSROOT/usr/lib"

      $ADDITIONAL_CONFIGURE_FLAG

      make clean

make -j4

make install

}

CPU=armv7-a

PREFIX=$(pwd)/android_all/$CPU

build

read -p"Press any key to continue."

3开始编译

操作如下图所示,开始等着就好了。完成后会在ffmpeg的目录下面生成android_all文件夹。

image.png

步骤没问题的话基本上等半个来小时就可以了。

问题总结

看这篇文章的时候,可能已经搜索了很多文章了。其实编译错误的主要问题就是版本问题,很多文章都提到不要用最新的。最新的编译会失败报错,我也是转悠了好多,这里面主要涉及到了高版本ndk的问题,低版本是带着gcc编译器的,好像是从ndk17以后就不带这个编译器了,开始使用 clang进行编译。所以在编译过程中有一大部分提示gcc或者clang找不到,建议使用clang编译,gcc有很多问题,还要修改头文件指定,而且还不是最新的版本。如果不行,除了MinGW其他的都重新走一遍。万里长城第一步,突然项目就忙起来了。只能发下抽空在看了。
搞得时候感觉很麻烦,有一堆问题。现在出来了,过了几天以前的哪堆问题全忘记了。

0人点赞

日记本

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值