当前位置: 首页 > news >正文

Android 13(T) - Media框架(1)- 总览

从事Android Media开发工作三年有余,刚从萌新变成菜鸟,一路上跌跌撞撞学习,看了很多零零碎碎的知识,为了加深对Android Media框架的理解,决定在这里记录下学习过程中想到的一些问题以及一些思考,也希望对初学Android并且有相同问题的同学有一些帮助。由于本人水平有限,笔记的内容可能会有一些错误,如果看到也恳请指出。
ps. 这里的Media框架指的是Android媒体播放器、音视频编解码相关的内容。

下面是我绘制的简单的Android Media框架图,主要包含有8个组成部分:

  1. Media Java API (MediaPlayer.java)
  2. Java API 用到的 JNI 方法以及本地服务的封装 (libmedia)
  3. 本地服务的实现MediaPlayerService (media.player)
  4. 本地player的实现 (NuPlayer)
  5. player依赖的相关服务 (media.extractors)
  6. player依赖的编解码框架 (libstagefright)
  7. libstagefright所依赖的vendor服务 (media.codec)
  8. 编解码组件框架 (OpenMax)

请添加图片描述

我们一起先了解一个问题:为什么Media框架中要使用服务,而不是动态链接或者静态链接调用呢?

我的理解是资源复用。比如说media.player这个service中会存储有MediaCodecList相关的信息,这个信息是通过加载/system/etc 或者/vendor/etc 中的xml文件获取的,使用服务我们可以只加载一次这些信息,就可以到处使用,而不是每次使用时单独去加载。当然还有其他原因,这里不做过多的叙述,等到了相关章节会再详细了解。

开始学习前还有一些前备知识需要了解,包括智能指针、异步消息机制、以及binder框架,这三部分穿插于Android Media框架的各个角落,先了解他们会对我们看代码有些许帮助。我在学习Media框架之前已经提前学习了这部分的内容,也做了一些笔记,这里也贴出来让有需要的同学看看。

  • 智能指针
  • 异步消息机制
  • binder学习

对于binder的学习可以不用很深入(我也不太会,笔记记录的乱起八糟),了解如何使用即可。这里也贴一个我的学习demo,比较复杂一点,但是更加贴近实际的使用:

  • binder demo

学习过程中贴的代码来自于aospxref.com:

  • aospxref.com
http://www.lryc.cn/news/102813.html

相关文章:

  • 简述vue3(ts)+antdesignvue项目框架搭建基本步骤
  • webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1
  • GDAL OGR C++ API 学习之路 (5)OGRLayer篇 代码示例
  • NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍
  • 一起学算法(滑动窗口篇)
  • HTML <q> 标签
  • 机器学习02-再识K邻近算法(自定义数据集训练及测试)
  • github使用笔记及git协作常用命令
  • iOS - Apple开发者账户添加新测试设备
  • vue 前端 邮箱、密码、手机号码等输入验证规则
  • 如何看待前端已死这个问题(大学生篇)
  • 揭开高级产品经理思维的秘密
  • Java 学习路线图
  • 在springboot项目中使用策略工厂模式
  • mysql综合练习语法总结
  • 统计神经网络参数量、MAC、FLOPs等信息
  • 【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力(CVPR2021)
  • Ansible 自动化运维
  • 指纹浏览器能为TikTok运营提供哪些便利?
  • 关于远程直接内存访问技术 RDMA 的高性能架构设计介绍 | 龙蜥技术
  • 【Boost搜索引擎项目】
  • JVM入门篇-JVM的概念与学习路线
  • “程序员求职攻略:IT技术岗面试的必备技巧“
  • 回归预测 | MATLAB实现WOA-ELM鲸鱼算法优化极限学习机多输入单输出回归预测
  • 方法的定义和格式
  • 【Linux】进程篇(补):简易 shell 的实现(进程深刻理解、内建命令的使用)
  • django Ajax--前后端数据交互
  • 【嵌入式学习笔记】嵌入式入门1——GPIO
  • [SQL挖掘机] - 多表连接: union
  • AI面试官:SQL Server数据库(三)