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

内容分享1天前发布
1 0 0

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

需要准备下载的东西

MinGW下载安装

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

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

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

环境配置path下面

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

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

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

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

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

ffmpeg开始编译

1.修改ffmpeg的configure文件

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

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

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

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

cross_prefix_clang

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


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}" 

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

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

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文件夹。

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

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

问题总结

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

© 版权声明

相关文章

暂无评论

none
暂无评论...