本次编译属于2013年6月项目的一部分,重新修改使用。

为统一工程版本

ffmpeg版本为1.2.1

本次的目录结构为

工程目录/jni/Android.mk

工程目录/jni/Application.mk
工程目录/jni/ffmpeg/(ffmpeg source code)
工程目录/jni/ffmpeg/Android.mk
工程目录/jni/ffmpeg/av.mk
工程目录/jni/ffmpeg/config.sh
工程目录/jni/ffmpeg/config.mak
工程目录/jni/jni/Android.mk
工程目录/jni/jni/FFAudioJni.cpp
工程目录/jni/jni/FFAudioCodec.h
工程目录/jni/jni/FFAudioCodec.cpp
......

1.下载ffmpeg 1.2.1  原码 ffmpeg-1.2.1.tar.bz2

2.解压到文件夹ffmpeg。跟目录下添加文件 config.sh

3.项目中需要的几个ffmpeg库为libavformat libavcodec libavutil libpostproc libswresample libswscale
所以,在ffmpeg文件夹libavformat libavcodec libavutil libpostproc libswresample libswscale这几个文件夹下各地添加一个文件Android.mk
并且各自文件夹下的Makefile的第一句include $(SUBDIR)../config.mak 使用#注释掉
即是由include $(SUBDIR)../config.mak
变成#include $(SUBDIR)../config.mak

4.ffmpeg 文件夹下,命令行运行

$ ./config.sh

$ make

$ make install

5.工程目录下运行

$ ndk-build

6. ndk-build 会报如下错误
找不到intmath.h
解决方法:将ffmpeg源码中/home/gong/android/workspace/HelloJni/jni/ffmpeg/libavutil/intmath.h 拷贝添加intmath.h到编译结果include路径下

7. ndk-build 会报如下错误
libavutil/parseutils.c:441:7: error: conflicting types for ‘av_small_strptime’
libavutil/parseutils.h:158:7: note: previous declaration of ‘av_small_strptime’ was here
原因是:
ndk-build 默认带 -I 参数。这样导致.c文件搜索路径顺序,当前路径比android sysroot路径优先。而ffmpeg 1.0 以后版本调用系统一些方法如time.h,被ffmpeg目录的time.h替代。导致错误。
参考:https://trac.ffmpeg.org/ticket/1783
http://weimingtom.iteye.com/blog/1483566
解决方法:
修改所有lib***文件夹下的Android.mk中local路径

LOCAL_C_INCLUDES := \
$(LOCAL_PATH) \
$(LOCAL_PATH)/..
 
改为
LOCAL_C_INCLUDES :=
LOCAL_C_INCLUDES += $(SYSROOT_INC)/usr/include
#LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
 
注释掉$(LOCAL_PATH)目录并提前sysroot的优先顺序

linux下编译安卓ffmpeg的更多相关文章

  1. Linux下编译安装FFmpeg

    FFmpeg官网:http://www.ffmpeg.org 官网介绍 FFmpeg is the leading multimedia framework, able to decode, enco ...

  2. linux下编译ffmpeg 引入外部库x264

    Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...

  3. [编译] 7、在Linux下搭建安卓APP的开发烧写环境(makefile版-gradle版)—— 在Linux上用命令行+VIM开发安卓APP

    April 18, 2020 6:54 AM - BEAUTIFULZZZZ 目录 0 前言 1 gradle 安装配置 1.1 卸载系统默认装的gradle 1.2 下载对应版本的二进制文件 1.3 ...

  4. ubuntu下编译原生ffmpeg

    本文主要介绍Linux 系统下如何编译Ffmpeg,编译环境是Ubuntu 16.04,Ffmpeg版本是3.4.2.Windows环境 下如何编译ffmpeg前面有博文介绍,也录有视频,感兴趣的同学 ...

  5. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  6. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  7. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  8. linux下编译出现空间不足解决办法

    linux下编译出现空间不足解决办法 编译内核出现问题: AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...

  9. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

随机推荐

  1. 关于博客名“大话济公”的说明

    其实本来没打算起这个名字的,换了几个名字都被占用了(无语啊...).最近呢,我在研究<济公传>,对于济公的传说比较喜欢,尤其是这个任务,诙谐幽默,同时有时时刻刻在帮助有困难的群众,虽然是个 ...

  2. SDC(6)–I/O约束

    应理解为仅限于内部的约束.即从输入Pin到寄存器D口,以及从寄存器Q口到输出Pin. 例如: 约束如下: 注意set_output_delay的计算

  3. OpenGL ES 3.0 基础知识

    首先要了解OpenGL的图形管线有哪些内容,再分别去了解其中的相关的关系: 管线分别包括了顶点缓冲区/数组对象,定点着色器,纹理,片段着色器,变换反馈,图元装配,光栅化,逐片段操作,帧缓冲区.其中顶点 ...

  4. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  5. Eclipse 启动问题:'Initilizing Java Tooling' has encountered a problem(。。。)

    一.问题描述: . 二.分析及解决 ...

  6. 十款优秀的在线JavaScript工具介绍

    JavaScript是Web开发者不可或缺的一项技能,它可以为你的网站添加丰富的交互功能和绚丽的视觉效果,以此来增强用户体验. 本文整理了10款非常优秀的在线JavaScript代码工具,涵盖编辑.压 ...

  7. codeforces 390E Inna and Large Sweet Matrix

    本题的主要算法就是区间更新和区间求和: 可以用线段树和树状数组来做: 感觉线段树写的太麻烦了,看到官方题解上说可以用树状数组做,觉得很神奇,以前用过的树状数组都是单点维护,区间求和的: 其实树状数组还 ...

  8. opencv for python 之 突出点检测

    opencv下载地址:http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.3/OpenCV-2.4.3.exe/dow ...

  9. 如何启动 SQL Server Agent(SQL Server 配置管理器)

    如何启动 SQL Server Agent(SQL Server 配置管理器) SQL Server 2008 R2 其他版本   4(共 6)对本文的评价是有帮助 - 评价此主题 可以从 SQL S ...

  10. ANDROID_MARS学习笔记_S01原始版_003_对话框

    1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest ...