Android Media Framework - 开篇
前言
Android Media是一块非常庞大的内容,上到APP的书写,中到播放器的实现、封装格式的了解,下到编解码组件的封装、VPU API的了解,每块内容的学习都需要我们下很大的功夫。此外,我们还要对相关的模块进行了解,比如AudioFlinger、SurfaceFlinger等,他们与Media相关交织共同构建了Android多媒体平台。
音视频开发的知识本就繁杂细碎,这些内容融入到Android框架中,对于初学者而言又复杂了些许。网上已经有很多优秀的文章解析了Android Media框架,笔者阅读这些文章收获了许多,但同样也有许多问题得不到解决。“纸上得来终觉浅,绝知此事要躬行”,笔者决定系统地学习Android Media框架,从去年开始潦草记录了几十篇学习笔记,学习过程中碰到了许许多多的问题,思考过后对Android Media框架也有了新的认识,再回过头来看,很多内容依旧是一知半解,很多理解也是“自以为是”。深思熟虑后,笔者决定重新思考整理,从全新的角度切入,力求能够更系统、更深入地理解Android Media框架,同时也会把思考以文章的形式整理出来,放在网上供读者参考。由于笔者水平有限,文章中难免存在错误,也请读者在顺着文章思路阅读的过程中保持审慎思考,如有错误欢迎指出。
在之前的学习中,笔者的想法是从Framework API开始学习,按照调用的顺序一层一层向下揭开框架的面纱。但是在实际的学习过程中,笔者发现上层实现是紧紧依赖下层实现的,不理解下层就很难通透地理解上层。为了学地通体透亮,笔者这次将从底层开始解析,一层一层向外包裹,直至延伸到最外层的API。
内容安排

Android Media框架有非常多的模块,笔者将要学习的内容以框架的形式绘制出来,在这个合集中我们将自下而上学习:
Android OpenMAX框架
Android Codec2框架
MediaCodec
NuPlayer
MediaExtractor Service
MediaPlayerService
MediaPlayer API
以上是精简的模块,我们要学习的远远不止上述内容,该合集将会包括例如OpenMAX框架会包含spec阅读、OMX IL Component实现,OMX IL Core实现、OMX IL Client等等,Codec2框架解析同样包含很多内容。由于内容多且广,工作繁忙,文章不会更新太快,尽量做到每篇文章都有所可读!
最后还要再强调一下,由于笔者水平有限,文章中如存在错误,也请读者不吝赐教。
Android Media Framework - 开篇的更多相关文章
- Android Media (Audio) Framework 多媒体系统框架
http://blog.csdn.net/lskshz/article/details/17264113 原址:http://blog.csdn.net/myzhzygh/article/detail ...
- Android media媒体库分析之:MediaProvider
在做Android媒体应用程序时(Audio.Image.Video)需要对Android的媒体提供者(MediaProvider)做详细的分析,下面记录一下我的收获: 一.获取MediaProvid ...
- Caused by:java.lang.IllegalStateException at android.media.MediaPlayer._setDataSource(Native Method)
使用Mediaplayer播放本地音频,在第二次调用mediaplayer.setDataSource()时报错如下: Caused by: java.lang.IllegalStateExcepti ...
- I.MX6 GPS Android HAL Framework 调试
I.MX6 GPS Android HAL Framework 调试 一.参考文章: android4. GPS定位问题 http://blog.csdn.net/bzw073/article/det ...
- Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式
Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式 JMF,全名为Java Media Framework,它可以在java appl ...
- Android application testing with the Android test framework
目录(?)[-] Android automated testing 1 How to test Android applications Tip 2 Unit tests vs functional ...
- Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19【转】
本文转载自:http://blog.csdn.net/netwalk/article/details/17686993 Error处理: android.media.MediaRecorder.sta ...
- 错误:Camera录制视频(6.0错误),5.1正常,7.1正常 (java.lang.RuntimeException: start failed.at android.media.MediaRecorder.native_start(Native Method))
Process: com.example.mycamera2, PID: 24086 java.lang.RuntimeException: start failed. at android.medi ...
- Android 添加framework资源包
为Android系统添加一个新的资源包 概述 传统的Android系统只有一个framework-res.apk资源包,第三方厂商在进行rom定制时会直接修改framework res资源,达到适配目 ...
- android 修改framework下资源文件后如何编译
在framework/base/core/res/res 下添加资源文件后需要先编译资源 然后编译framework 才可正常引用 进入项目根目录 cd frameworks/base/core/re ...
随机推荐
- openGauss每日一练(全文检索)
openGauss 每日一练(全文检索) 本文出处:https://www.modb.pro/db/224179 学习目标 学习 openGauss 全文检索 openGauss 提供了两种数据类型用 ...
- 宝塔面板配置MongoDB数据库
1-安装MongoDB 在面板中的[软件商店]搜索MongoDB并安装,推荐下载4.x以上的版本(可视化工具MongoDB Compass对高版本兼容比较好). 下载完成后,可以点击[设置],[版本切 ...
- Rust——生命周期
简而言之,即引用的有效作用域:一般情况下编译器会自动检查推导,但是当多个声明周期存在时,编译器无法推导出某个引用的生命周期,需要手动标明生命周期. 悬垂指针 悬垂指针是指一个指针指向了被释放的内存或者 ...
- 在windows电脑中安装redis
1,github下载地址:https://github.com/MSOpenTech/redis/tags 2,下载完成后,解压到对应文件夹 3,打开redis.windows.conf,在#requ ...
- 跨域是什么?Vue项目中你是如何解决跨域的呢?
一.跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能 所谓同源(即指在同一个域)具有以下三个相同点 ...
- Spark3.0 Standalone模式部署
之前介绍过Spark 1.6版本的部署,现在最新版本的spark为3.0.1并且已经完全兼容hadoop 3.x,同样仍然支持RDD与DataFrame两套API,这篇文章就主要介绍一下基于Hadoo ...
- NIFI简介
NIFI简介 首先是官网地址:Apache NiFi,不过会百度的估计都能搜到 因为后面的工作一定会用到,所以大致的听了一下讲解操作之类的 大概感觉就是NIFI是个web端的一种控制数据走向的工具?可 ...
- 使用 Docker 部署 TailChat 开源即时通讯平台
1)介绍 TailChat 官网: https://tailchat.msgbyte.com/ 作者:https://www.moonrailgun.com/about/ GitHub : https ...
- 云企业网CEN-TR打造企业级私有网络
简介: 为了满足企业大规模.多样化的组网和网络管理需求,云企业网(CEN)提出了转发路由器TR(Transit Router)的概念.在每个地域内创建一个转发路由器,可以连接大量VPC.VBR,作为您 ...
- [FAQ] JS 时间戳格式化为 date
拷贝使用,不用引入第三方库 function formatDate (date = 0, fmt = 'yyyy-MM-dd hh:mm:ss') { date = new Date(+date) i ...