本次编译属于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. UML_时序图画法

    UML建模之时序图(Sequence Diagram) 一.时序图简介(Brief introduction) 二.时序图元素(Sequence Diagram Elements) 角色(Actor) ...

  2. 我的PHP之旅--PHP的判断、循环语句

    if语句 <?php if ($a = "some string") { // 就算括号中不是bool值,php也会自动转换为bool值 上一节写过各个类型转换bool值 / ...

  3. IIS MIME类型问题(html5 video 本地打开可以,IIS打开不了)

    问题: mediaelement js(html 5 视频插件)网页用ie9本地打开可以,iis,vs2010在ie9上运行不了,chrome可以 (在博客园里有个人跟我遇到相同的问题:http:// ...

  4. sql 锁相关(转)

    锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性. 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象.即如果没有锁定且多个用户同时访问一个数据库 ...

  5. jquery 简单弹出层(转)

    预定义html代码:没有 所有代码通过js生成和移除. 预定义css /* 基本弹出层样式 */ .my-popup-overlay { width:100%; height:auto; /* wid ...

  6. 应该知道的25个非常有用的CSS技巧

    在我们的前端CSS编码当中,经常要设置特殊的字体效果,边框圆角等等,还要考虑兼 容性的问题, CSS网页布局,说难,其实很简单.说它容易,往往有很多问题困扰着新 手,在中介绍了非常多的技巧,这些小技巧 ...

  7. 【弱省胡策】Round #5 Handle 解题报告

    这个题是我出的 sb 题. 首先,我们可以得到: $$A_i = \sum_{j=i}^{n}{j\choose i}(-1)^{i+j}B_j$$ 我们先假设是对的,然后我们把这个关系带进来,有: ...

  8. 环信_EaseUI 使用指南

    EaseUI 使用指南 简介 EaseUI 封装了 IM 功能常用的控件(如聊天会话.会话列表.联系人列表).旨在帮助开发者快速集成环信 SDK. 源码地址: EaseUI:https://githu ...

  9. 李洪强漫谈iOS开发[C语言-035]-选择结构-与小结

  10. [jobdu]扑克牌顺子

    一开始看到题还以为要DFS还是BFS,后来发现完全不用.排个序,然后看看大小王能不能弥补缺口就行,但后来又发现还要排除有相同大小牌的情况. #include <iostream> #inc ...