最近为Android2.3的多媒体框架Stagefright做Extractor,考虑到ffpeg能提供相对完整的文件格式解析,因此选择了它。所谓AOSP,是Android Open Source Project的缩写,也就是说我不是用NDK进行编译的,而是在Platform中编译的。

做过多媒体中间件的朋友都知道,视频文件在解码前必须先进行解析,主要工作是完成音视频的分流,并保存解析出来的音视频流的格式信息,如:编码格式,比特率,mime类型等等。这里提到的Extractor就是完成这个工作的,在其它多媒体框架中也有叫demuxer,parser或splitter。

再提一下rockplayer_ffmpeg,是在开源ffmpeg基础上进行裁减后的版本,用于目前广泛流行的一个全格式多媒体播放器rockplayer上,因此起名rockplayer_ffmpeg,下载地址:http://rockplayer.freecoder.org/download/rockplayer_ffmpeg.zip

最后说明对这个工程的修改和编译,本人将rockplayer_ffmpeg编译成.so文件。将rockplayer_ffmpeg与开源的ffmpeg进行比较,除了对目录和文件本身的差别外,最明显的差别是:rockplayer_ffmpeg的作者好人啊,将所有源文件整理成适合编译为一个单纯的.so文件中。这与目前网上广为流传的开源的ffmpeg在NDK下的编译有很大不同,尽管后者也是将其编译为一个.so,但是其中在.so中又依赖libavformat,libavutil,libavcodec等静态库。用NDK这种方式在AOSP下编译后,在使用过程中可能会遇到意想不到的错误,至少我碰到过,霎时恼人啊,列为看官希望你们好运。

这里的主要工作是修改rockplayer_ffmpeg目录下的Android.mk文件,config.h文件。

 首先,Android.mk的修改,记录如下

1、添加几个变量:

LOCAL_ARM_MODE := arm
      LOCAL_PRELINK_MODULE := false   //如果你愿意去修改prelink-linux-arm.map文件,可以不加该变量
      LOCAL_MODULE_TAGS := optional

2、去掉以下这几行,我这么做是由于兄弟我用的ARM芯片不支持这些个特性,如果兄弟你的支持,可以考虑加上

LOCAL_SRC_FILES +=$(VFP_SRC_FILES)
      LOCAL_SRC_FILES +=$(ARM6_SRC_FILES)
      LOCAL_SRC_FILES +=$(NEON_SRC_FILES)

3、注释掉以下几个源文件:

libavcodec/dxa.c
      libavcodec/flashsv.c
      libavcodec/lcldec.c
      libavcodec/pngdec.c
      libavcodec/tscc.c
      libavcodec/zmbv.c

原因是:这些文件都需要一个叫<zlib.h>的头文件,而在AOSP的标准径下没有,所以报错。看了下这这几个文件,都是codec用的,我作文件解析暂时用不到,所以直接kill掉了。如果兄弟你要用这些codec文件的话,恭喜你自己解决,要是能够把解决方法一并贴出来让大家学习就更完美了,兄弟这里先谢了。

4、可选项,针对那些需要用LOGI/D/V/W等进行信息打印的看官,那么在LOCAL_SHARED_LIBRARIES变量后添加一个libcutils


config.h的修改

1、将CONFIG_ZLIB改为0,为了关闭对<zlib.h>头文件的引用

2、如果报什么XXX_DECODER/ENCODER啥的找不到或类似错误,直接把CONFIG_XXX_DECODER/ENCODER置为0

rockplayer_ffmpeg在AOSP中的编译相关推荐

  1. 速通AOSP,成功编译调试Android源码

    /   今日科技快讯   / 近日据不少网友反馈,爱奇艺App开始对投屏功能作出限制,之前黄金VIP会员支持最高4K清晰度投屏,现在只能选最低的480P清晰度,要想进行4K投屏必须购买白金VIP会员. ...

  2. Android AOSP 下载和编译

    Android AOSP 下载和编译 欢迎入群交流 环境 链接: https://source.android.google.cn/docs/setup/build/initializing?hl=z ...

  3. kali系统AOSP源码编译

    kali系统AOSP源码编译 文章目录 kali系统AOSP源码编译 前言 一.编译准备 1.修改`zsh`为bash 2.安装`openjdk-8-jdk` 3.修改默认Python版本 4.添加环 ...

  4. Pixel 4 AOSP源码编译及刷机

    先吐槽,Google的代码和文档写的是真烂.完全根据他的文档来操作是完不成Pixel 4 AOSP源码编译和刷机这个事情的.经过痛苦的挣扎,最后终于刷机成功了. 代码下载 代码下载的流程在这,http ...

  5. 下载AOSP源码编译、调试、刷机

    一.准备工作 系统最好是Linux或者mac OS(本文基于Ubuntu). Ubuntu设置永不休眠,在setting中搜索power.blank-screen选择never. 一块大一点儿的硬盘, ...

  6. AOSP添加证书编译,tiktok无root抓包

    下载官方镜像,下载对应AOSP,编译出的*.img替换到官方镜像对应的文件, 刷入 把证书放到aosp源码的system/ca-certificates/files文件夹里,lunch aosp_sa ...

  7. 开源库Simd在vs2010中的编译及简单使用

    Simd是开源的图像处理库,它提供了很多高性能的算法,这些优化算法主要由SIMD指令来实现,包括SSE.SSE2.SSSE3.SSE4.1.SSE4.2.AVX等,此库可以应用在windows/lin ...

  8. Android项目中创建编译期的注解

    ==注解 生命周期为RetentionPolicy.RUNTIME,可在运行时通过反射获取. 生命周期为RetentionPolicy.CLASS, 编译期处理的注解,可以使用APT(Annotati ...

  9. C++头文件中预编译宏的目的

    C++头文件中预编译宏的目的 eg: #ifndef _FACTORY_H_ #define _FACTORY_H_ ...... #endif //~_FACTORY_H_ 防止头文件被重复包含,导 ...

最新文章

  1. php判据的例子,科学网—Hartle-Srednicki判据 - 李淼的博文
  2. 如何为博客选择可以赢利的主题
  3. python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
  4. 读EntityFramework.DynamicFilters源码_心得_示例演示02
  5. java网页版斗地主_JAVA控制台版斗地主
  6. 央视国际节目定价发布接口规范C2
  7. 风口上的猪-中国牛市
  8. 街舞中的rolling机器人_这,就是街舞中的那些“Swag”十足的舞蹈类型,你了解吗?...
  9. 来自帅气博主的c语言文案
  10. 电子邮件附件下载器简介
  11. SpringBoot集成Druid和数据库密码加密
  12. DCT变换在图像压缩中的实现
  13. 基于知识图谱和推荐系统的统一药物靶点相互作用预测框架
  14. ExtentReports生成自动化测试报告
  15. 学习软件的一点心得体会
  16. [os]os vmware 手机连接
  17. 【第四节 列表 和字典】
  18. Python 元组() (元素不能修改),元组的定义,元组与列表的转换,元组的应用场景
  19. Python 在Coinbase上的应用
  20. 在线磁盘扩容 500G =》 2T 实战教程

热门文章

  1. 判断二维数组是否为空的条件语句
  2. 如何在工作中如鱼得水?有三点很重要!!!!
  3. machine `aarch64-buildroot‘ not recognized
  4. 微信迎来更新:群聊能收钱 增加群主验证功能
  5. Assert断言的使用
  6. 世界杯看不明白?没事咱们还会画足球吗。
  7. 如何利用HTML5做游戏营销
  8. 小程序源码:王者荣耀改重复名,空白名最低战力查询助手
  9. 施工现场常见安全隐患、违规违章行为大全,80页PPT下载
  10. 我被现实强奸了,心情烂到极点!!!