rockplayer_ffmpeg在AOSP中的编译
最近为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中的编译相关推荐
- 速通AOSP,成功编译调试Android源码
/ 今日科技快讯 / 近日据不少网友反馈,爱奇艺App开始对投屏功能作出限制,之前黄金VIP会员支持最高4K清晰度投屏,现在只能选最低的480P清晰度,要想进行4K投屏必须购买白金VIP会员. ...
- Android AOSP 下载和编译
Android AOSP 下载和编译 欢迎入群交流 环境 链接: https://source.android.google.cn/docs/setup/build/initializing?hl=z ...
- kali系统AOSP源码编译
kali系统AOSP源码编译 文章目录 kali系统AOSP源码编译 前言 一.编译准备 1.修改`zsh`为bash 2.安装`openjdk-8-jdk` 3.修改默认Python版本 4.添加环 ...
- Pixel 4 AOSP源码编译及刷机
先吐槽,Google的代码和文档写的是真烂.完全根据他的文档来操作是完不成Pixel 4 AOSP源码编译和刷机这个事情的.经过痛苦的挣扎,最后终于刷机成功了. 代码下载 代码下载的流程在这,http ...
- 下载AOSP源码编译、调试、刷机
一.准备工作 系统最好是Linux或者mac OS(本文基于Ubuntu). Ubuntu设置永不休眠,在setting中搜索power.blank-screen选择never. 一块大一点儿的硬盘, ...
- AOSP添加证书编译,tiktok无root抓包
下载官方镜像,下载对应AOSP,编译出的*.img替换到官方镜像对应的文件, 刷入 把证书放到aosp源码的system/ca-certificates/files文件夹里,lunch aosp_sa ...
- 开源库Simd在vs2010中的编译及简单使用
Simd是开源的图像处理库,它提供了很多高性能的算法,这些优化算法主要由SIMD指令来实现,包括SSE.SSE2.SSSE3.SSE4.1.SSE4.2.AVX等,此库可以应用在windows/lin ...
- Android项目中创建编译期的注解
==注解 生命周期为RetentionPolicy.RUNTIME,可在运行时通过反射获取. 生命周期为RetentionPolicy.CLASS, 编译期处理的注解,可以使用APT(Annotati ...
- C++头文件中预编译宏的目的
C++头文件中预编译宏的目的 eg: #ifndef _FACTORY_H_ #define _FACTORY_H_ ...... #endif //~_FACTORY_H_ 防止头文件被重复包含,导 ...
最新文章
- php判据的例子,科学网—Hartle-Srednicki判据 - 李淼的博文
- 如何为博客选择可以赢利的主题
- python安装requests库提示更新_解决已经安装requests,却依然提示No module named requests问题...
- 读EntityFramework.DynamicFilters源码_心得_示例演示02
- java网页版斗地主_JAVA控制台版斗地主
- 央视国际节目定价发布接口规范C2
- 风口上的猪-中国牛市
- 街舞中的rolling机器人_这,就是街舞中的那些“Swag”十足的舞蹈类型,你了解吗?...
- 来自帅气博主的c语言文案
- 电子邮件附件下载器简介
- SpringBoot集成Druid和数据库密码加密
- DCT变换在图像压缩中的实现
- 基于知识图谱和推荐系统的统一药物靶点相互作用预测框架
- ExtentReports生成自动化测试报告
- 学习软件的一点心得体会
- [os]os vmware 手机连接
- 【第四节 列表 和字典】
- Python 元组() (元素不能修改),元组的定义,元组与列表的转换,元组的应用场景
- Python 在Coinbase上的应用
- 在线磁盘扩容 500G =》 2T 实战教程