zoukankan      html  css  js  c++  java
  • linux下编译安卓ffmpeg

    本次编译属于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的优先顺序

  • 相关阅读:
    [noi31]MST
    [noi34]palindrome
    如何下载InfoQ的视频
    ESRI.Arcgis.esrisystem.AoInitializeClass编译错误解决方法
    Engine中如何把没有Z值的Gemetry转为有Z值的Geomtry:报错"the geometry has no Z values"
    安装 Silverlight 5 出错的解决方法
    屏蔽优酷广告
    ESRI.Arcgis.esrisystem.AoInitializeClass编译错误解决方法
    屏蔽优酷广告
    安装 Silverlight 5 出错的解决方法
  • 原文地址:https://www.cnblogs.com/zzugyl/p/3512715.html
Copyright © 2011-2022 走看看