我 曾在网上搜了很多关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手机视频功能 #### 一、前言 随着移动设备处理能力的不断增强,越来越多的应用程序开始利用原生的C/C++代码来提高性能,尤其是在多媒体处理领域。FFmpeg是一款强大的跨平台...
在NDK中编译FFmpeg涉及以下步骤: 1. **下载与配置FFmpeg源码**:首先从FFmpeg官方网站获取最新源码,然后根据Android平台的需求配置编译选项,例如指定armeabi-v7a或arm64-v8a等架构。 2. **构建FFmpeg**:使用...
2. 一个配置良好的Linux开发环境,因为NDK编译通常在Linux环境下进行,虽然也可以在其他系统上,但流程可能有所不同。 3. 获取FFmpeg源代码,可以通过访问FFmpeg官方网站或者使用Git克隆项目仓库来获取最新版本。 ...
Ubuntu20系统,Android NDK-r21e 编译 FFmpeg4.2.4; 编译出libavcodec.so libavdevice.so、libavfilter.so、libavformat.so、libavutil.so、libswresample.so、libswscale.so;
编译FFmpeg需要NDK,这里使用的版本是r25c。 3. **环境配置** 在开始编译之前,确保已安装Android Studio,配置好NDK路径,并安装必要的构建工具如Git、CMake、Android SDK Platform Tools等。 4. **获取FFmpeg...
针对之前有的小伙伴说使用hello-jni测试 NDK-r9编译好的最新的FFmpeg2.2的所有so库和头文件 的时候。在使用cygwin编译jni的时候会报错:”undefined reference to 'avcodec_version'“ 的问题,所以现在把本人在...
利用NDK,将FFMPEG移植到android平台 这个是一个完整的android工程,里面有编译好的ffmpeg库 环境: ubuntu 14.04 ffmpeg 2。5 android 4.1.2 android-ndk-r10d
放在libffmpeg目录下的android.mk文件,根据Scott Wong给出的文档进行了修改,可以直接使用。另外还需要在Libavcodec、libavformat等目录下添加android.mk文件,libavcodec示例如下: LOCAL_PATH := $(call my-dir) ...
1、 生成(安装)交叉编译链工具 2、 生成配置文件 3、 编译 4、 安装
通常使用Android Studio的CMakeLists.txt文件或者ndk-build脚本来编译FFmpeg源码。 4. **JNI接口**:在Android应用中调用FFmpeg库,需要通过Java Native Interface (JNI) 来创建C/C++与Java之间的桥梁。在JNI中定义...
首先,要编译FFmpeg,你需要配置Android NDK环境。NDK包含了一系列工具,用于交叉编译针对不同Android架构的C/C++代码。在设置好NDK路径后,你需要修改项目中的build脚本来匹配你的Android平台版本和目标设备的CPU...
利用ndk编译android的sh文件,利用该sh文件,能够正确编译出so文件
本文将详细介绍如何在Linux系统下使用NDK编译FFmpeg,并生成适用于Android的.so库。主要涉及的知识点包括: 1. **FFmpeg框架**:FFmpeg提供了多种音视频编解码器,如H.264、AAC等,以及各种格式的容器支持,如MP4、...
本文将详细讲解如何使用Android Studio和CMake编译FFmpeg库,生成SO共享库,并处理相关的头文件和CMakeLists配置。 首先,我们需要在Android Studio项目中引入CMake构建系统。打开`build.gradle`(Module级别)文件...
2. **编译FFmpeg**: a. 创建一个名为`config.sh`的配置脚本文件,其中包含了一系列的编译选项,如指定预构建工具链路径、目标平台、临时目录、配置选项等。这些选项用于定制FFmpeg编译,以适应Android环境,例如...
上面的压缩包是通过R19C版本的NDK编译过的FFMPEG4.2.2的库。 压缩包里是完整的FFMPEG4.2.2源码,包含编译生成的文件目录。带有编译配置脚本。 里面的库可以直接在Android上使用。 库采用64位的编译器编译,适用于...
在编译FFmpeg时,NDK提供了必要的编译器、链接器和其他工具,以及Android系统的头文件和库,以便我们构建针对Android的二进制文件。 7. **构建步骤**: 编译FFmpeg通常涉及以下步骤: - 安装依赖项:包括NDK、Java ...