前言

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 - 开篇的更多相关文章

  1. Android Media (Audio) Framework 多媒体系统框架

    http://blog.csdn.net/lskshz/article/details/17264113 原址:http://blog.csdn.net/myzhzygh/article/detail ...

  2. Android media媒体库分析之:MediaProvider

    在做Android媒体应用程序时(Audio.Image.Video)需要对Android的媒体提供者(MediaProvider)做详细的分析,下面记录一下我的收获: 一.获取MediaProvid ...

  3. Caused by:java.lang.IllegalStateException at android.media.MediaPlayer._setDataSource(Native Method)

    使用Mediaplayer播放本地音频,在第二次调用mediaplayer.setDataSource()时报错如下: Caused by: java.lang.IllegalStateExcepti ...

  4. I.MX6 GPS Android HAL Framework 调试

    I.MX6 GPS Android HAL Framework 调试 一.参考文章: android4. GPS定位问题 http://blog.csdn.net/bzw073/article/det ...

  5. Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式

    Atitit. 软件---多媒体区---- jmf 2.1.1 Java Media Framework 支持的格式 JMF,全名为Java Media Framework,它可以在java appl ...

  6. Android application testing with the Android test framework

    目录(?)[-] Android automated testing 1 How to test Android applications Tip 2 Unit tests vs functional ...

  7. Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19【转】

    本文转载自:http://blog.csdn.net/netwalk/article/details/17686993 Error处理: android.media.MediaRecorder.sta ...

  8. 错误: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 ...

  9. Android 添加framework资源包

    为Android系统添加一个新的资源包 概述 传统的Android系统只有一个framework-res.apk资源包,第三方厂商在进行rom定制时会直接修改framework res资源,达到适配目 ...

  10. android 修改framework下资源文件后如何编译

    在framework/base/core/res/res 下添加资源文件后需要先编译资源 然后编译framework 才可正常引用 进入项目根目录 cd frameworks/base/core/re ...

随机推荐

  1. 资源池化支持同城dorado双集群切换(非日志合一)

    资源池化支持同城 dorado 双集群部署方式:dd 模拟(手动部署+无 cm).cm 模拟(手动部署 dd 模拟+有 cm).磁阵(手动部署).集群管理工具部署 1.集群间切换 基于<资源池化 ...

  2. APM vs NPM

    概述 APM:Application Performance Monitoring 的简称,即应用性能监控. NPM:Network Performance Monitoring 的简称,即网络性能监 ...

  3. recover database until cancel

    数据库演示版本为 12.1.0.2 该系列涉及恢复过程中使用的 5 个语句: 1. recover database 2. recover database until cancel 3. recov ...

  4. 将项目封装进docker进行迁移和使用

    首先要理解docker的基本使用,本文不做过多阐述,博主也对docker没有了解透彻. 这里列一下docker的基本命令: docker info # 查看docker信息 docker -v # 查 ...

  5. js中“??“和“?.“怎么用?

    ??:空值合并操作符 逻辑操作符,左侧为null和undefined时,才返回右侧的数const sum = null ?? 12console.log(sum);//输出12const sum1 = ...

  6. Kafka 线上性能调优

    Kafka 线上性能调优是一项综合工程,不仅仅是 Kafka 本身,还应该从硬件(存储.网络.CPU)以及操作系统方面来整体考量,首先我们要有一套生产部署方案,基于这套方案再进行调优,这样就有了可靠的 ...

  7. 力扣500(java&python)-键盘行(简单)

    题目: 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词.键盘如下图所示. 美式键盘 中: 第一行由字符 "qwertyuiop" 组成.第 ...

  8. 牛客网-SQL专项训练17

    ①SQL查询中使用WHere子句指出的是:查询条件 ②Mysql中表student_table(id,name,birth,sex),查询重复姓名.重复次数,并按重复次数降序排列,正确的是(A)? 解 ...

  9. 小白也能懂的 Nacos 服务模型介绍

    简介: 理解了 Nacos 的服务模型,也有利于我们了解 Nacos 背后的工作原理,从而确保我们正确地使用 Nacos. 作者:岛风 前言 按照目前市场上的主流使用场景,Nacos 被分成了两块功能 ...

  10. 2019-11-29-VisualStudio-2019-如何离线下载

    title author date CreateTime categories VisualStudio 2019 如何离线下载 lindexi 2019-11-29 08:38:13 +0800 2 ...