我 曾在网上搜了很多关ndk编译ffmpeg的文章,但大多千篇一律,如利用ffmpeg自带的configure.sh脚本自动生成makefile文 件,然后在编写Android.mk,引用makefile文件里面的某些变量,修改makefile文件,接着执行ndk-build命令。这些方法也 能编译成功,但总让我感觉不舒服,特别是拷贝一些不所云的命令。
为了找到更好的编译方法,我去参考了ndk自带的文档,其中有一篇STANDALONE-TOOLCHAIN.html,里面涉及了独立编译的方法,
原文引用
A typical use case if invoking the 'configure' script of an open-source
library that expects a cross-compiler in the CC environment variable.
那意思很明显我们可以用这种独立编译方法,编译一些由‘configure’脚本生成的开源库,这篇介绍了把ndk当成普通编译工具使用,比我我们在linux使用的gcc命令,其实ndk都为我们提供了,甚至ndk还为我们提供了make工具。
此外你还需要了解configure参数,你可以用./configrue --help ->help.txt 生成帮助文件。我的编译代码如下:
./configure \
--logfile=FILE \
--prefix='/home/wangzhiping/source/ffmpeg_ndk/release' \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-doc \
--disable-programs \
--disable-avdevice \
--enable-small \
--cross-prefix='/home/wangzhiping/arm_android14_toolchain/bin/arm-linux-androideabi-' \
--enable-cross-compile \
--target-os=linux \
--extra-cflags='-I/home/wangzhiping/arm_android14_toolchain/sysroot/usr/include' \
--extra-ldflags='-L/home/wangzhiping/arm_android14_toolchain/sysroot/usr/lib' \
--arch=arm \
--disable-symver \
--disable-debug \
--disable-stripping \
--extra-cflags="-fPIC -DANDROID" \
logfile: 是输出日志一的文件名
prifix :在运行make install后,他会相应生成的库文件,及头文件拷贝的指定文件夹
cross-prefix:是你编译工具的前缀
extra-cflags:都是编译时候的选项,你在里面要提供头文件的位子
extra-ldflags:是连接时候的选项,要提供你库文件的件子
这些配置,你要参考 STANDALONE-TOOLCHAIN.htm ,你还可以自成由发挥,只要正确地指定 gcc,等编译工具和头文件以及链接库的位子即可, 比如你可以把extra-cflags和extra-ldflags去掉,而加sysroot先项,configure完成后,就运行make了
(未完待继)
相关推荐
ubuntu下ndk编译ffmpeg0.8.1,详细介绍了如何将ffmpeg移植到linux下,生成的so动态链接库文件可以直接在android里使用。
ndk编译ffmpeg修改后的configure文件ndk编译ffmpeg修改后的configure文件ndk编译ffmpeg修改后的configure文件ndk编译ffmpeg修改后的configure文件
用Android_NDK编译FFmpeg,RTSP手机视频
该资源为NDK编译ffmpeg中的YUV转换BGR代码
在NDK9 环境下编译 Android 下的 ffmpeg, 可以编译动态库, 静态库。可以用于Android下h264解码。
详细的描述了Android NDK下编译ffmpeg开源库的步骤。
利用NDK,将FFMPEG移植到android平台 这个是一个完整的android工程,里面有编译好的ffmpeg库 环境: ubuntu 14.04 ffmpeg 2。5 android 4.1.2 android-ndk-r10d
针对之前有的小伙伴说使用hello-jni测试 NDK-r9编译好的最新的FFmpeg2.2的所有so库和头文件 的时候。在使用cygwin编译jni的时候会报错:”undefined reference to 'avcodec_version'“ 的问题,所以现在把本人在...
android-ffmpeg:用于使用Android NDK编译FFmpeg源代码的Android项目
放在libffmpeg目录下的android.mk文件,根据Scott Wong给出的文档进行了修改,可以直接使用。另外还需要在Libavcodec、libavformat等目录下添加android.mk文件,libavcodec示例如下: LOCAL_PATH := $(call my-dir) ...
利用ndk编译android的sh文件,利用该sh文件,能够正确编译出so文件
1、 生成(安装)交叉编译链工具 2、 生成配置文件 3、 编译 4、 安装
上面的压缩包是通过R19C版本的NDK编译过的FFMPEG4.2.2的库。 压缩包里是完整的FFMPEG4.2.2源码,包含编译生成的文件目录。带有编译配置脚本。 里面的库可以直接在Android上使用。 库采用64位的编译器编译,适用于...
ffmpeg4.16 ndk21 android 21 版本编译的库,包含 arm-v7a、arm-v8,包含include、动态链接库.so文件。
最新版ffmpeg编译生成android使用的so 最新版ffmpeg编译生成android使用的so 最新版ffmpeg编译生成android使用的so 最新版ffmpeg编译生成android使用的so
用ndk r9编译的ffmpeg2.2.4库,可以在android中通过jni方法调用, 头文件请自己到官网下载源代码
在Linux下编译FFmpeg+android ndk成功的脚本及so库; 包含sh脚本,和fflib编译成功的zip包
100% ndk编译通过的ffmpeg0.11版本
将其解压得到download目录直接放在opencv\sources\3rdparty\ffmpeg下即可
针对Android平台编译好的FFmpeg 6.0的动态链接库.so文件,包括armeabi-v7a ,arm64-v8a两个版本.