本次编译属于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. Java 中正确使用 hashCode 和 equals 方法

    在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hash ...

  2. vim 分屏 screen

    上下分割,并打开一个新的文件. :sp filename 左右分割当前打开的文件. Ctrl+W v 左右分割,并打开一个新的文件. :vsp filename 移动光标 Vi中的光标键是h, j, ...

  3. c++函数内部可以返回函数内部定义的指针 但是不能返回函数内部定义的数组

    1.返回数组 // demo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<stdio.h> char *m ...

  4. 1089-Duplicate Removal

    描述 The company Al's Chocolate Mangos has a web site where visitors can guess how many chocolate cove ...

  5. USB 枚举过程详解

    Windows 对USB设备的枚举过程流程图如图1所示: 图1 WP8的USB功能只支持一个配置,三个接口,也就是分别有如下的字段: 设备描述符的bNumConfigurations=1, 配置描述符 ...

  6. VMware与宿敌Amazon一笑泯恩仇:重新定义混合云?(私有云节节败退)

    摘要: 私有云巨头VMware看来是真的要输给一个“书贩子” 了!这意味着私有云将败给公有云? [阅读原文] 三年前,虚拟化巨头VMware曾对亚马逊Amazon云服务AWS竖过中指:我们怎么可能打不 ...

  7. 关于方程x^2+y^2=p (p为素数)的解问题

    问题描述:对于方程,其中为素数,x,y为整数,且,输出符合条件的x,y. 分析:对于本方程,我们通过费马平方和定理知道,只有奇素数p满足这个条件时才有解. 那么当此方程有解时,解有几个呢?很明显不可能 ...

  8. 坑爹的libxml2 for mingw 编译

    按照官方的readerme.txt说法生成Makefile之后,你会发现编译时候需要创建几个文件夹. 还有就是因为宏定义问题,报错,需要在config.h中加入#define HAVE_STDINT_ ...

  9. 2016年中国500强利润率最高的公司,中国500强最赚钱的40家公司,ROE最高的公司

    2016年中国500强利润率最高的公司     排名 公司名称 利润率 62 阿里巴巴集团控股有限公司 73.09% 87 百度股份有限公司 50.71% 195 国信证券股份有限公司 47.87% ...

  10. NOI2008 志愿者招募

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1859  Solved: 1169[Submit][Stat ...