下面是框架简图:

首先调用mediaRecorder.java中的方法比如start方法,会调用jni:

也就是调用android_media_recorder.cpp的start方法:

接着到mediaRecorder.cpp,mediaRecorder是由mediaplayerService创建的,而mediaRecoder.cpp和mediaplayerService是通过binder机制来进行进程间的通信的,这时client端就是通过操作服务端返回的imediaRecorder来对服务端进行控制的:

这里new mediaRecorderClient这是其实是创建了一个StagefrightRecorder:

其实我们在java层调用start就是调用了StagefrightRecorder中的strat方法,在这里我们可以看到根据传进来的mOutputFormat值(输出格式)会选择不同的编码类型的方法:

假如我们输出的是3gp格式,我们调用:startMPEG4Recording() 方法:

接着调用setupMPEG4Recording:

原文地址; http://blog.csdn.net/itachi85/article/details/8278362

Android mediaRecorder框架简述(一)相关推荐

  1. Android mediaRecorder框架简述(二)

    这里有个setupVideiEncoder,看来这里应该是对视频编码的地方 根据不同的编码类型来设置不同的参数,这个方法代码有些多直截取部分代码: 来看看关键的一句,这里创建了OMXCodec 然后把 ...

  2. [Android][MediaRecorder] Android MediaRecorder框架简洁梳理

    Android MediaRecorder框架简洁梳理 一.MediaRecorder整体架构 1.1 MediaRecorder录制数据流框架 1.2 PersistentSurface及Graph ...

  3. Android MediaRecorder架构详解

    1. 简介 在android中录制音频有两种方式,MediaRecorder和AudioRecord.两者的区别如下: (1) MediaRecorder 简单方便,不需要理会中间录制过程,结束录制后 ...

  4. Android数据库框架-----ORMLite 的基本用法

    ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...

  5. Android数据库框架总结

    本文转自:http://blog.csdn.net/da_caoyuan/article/details/61414626 一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封 ...

  6. Android音频框架之二 用户录音启动流程源码走读

    前言 此篇是对<Android音频框架之一 详解audioPolicy流程及HAL驱动加载>的延续,此系列博文是记录在Android7.1系统即以后版本实现 内录音功能. 当用户使用 Au ...

  7. Android Binder框架实现之bindService详解

        Android Binder框架实现之bindService详解 Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android Bi ...

  8. android版本更新框架、新闻客户端、音乐播放器、自定义View、Github客户端、指南针等源码...

    Android精选源码 XUpdate 一个轻量级.高可用性的Android版本更新框架 Android一个可定制的圆形进度条 Android自定义View分享 打钩动画源码 android音乐文件播 ...

  9. Android View框架的measure机制

    Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure)Android View框架的measure机制 http://www.cnblogs.com/xyh ...

最新文章

  1. 如何更改微调器的文字大小和文字颜色?
  2. datagrid数据表格当数据为0的时候页面不显示数据
  3. 为什么 HashMap 的加载因子是0.75?
  4. ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六)
  5. javaScript变量、作用域链
  6. Java EE 6示例– Galleria –第3部分
  7. mysql主从同步开启后的iptables的设定问题
  8. codevs——2822 爱在心中
  9. 怎样快速将Word转长图
  10. cydia无法安装卸载插件_简单 用文件管理器干掉Cydia顽固插件源
  11. Boost基础篇——安装
  12. 从零开始一套完整的短视频运营方案,想做抖音快手短视频的速来观摩。
  13. Eclipse中没有Servers或Dynamic Web Project的解决方案
  14. xay loves or
  15. Pro/E产品设计之绘制齿轮的步骤
  16. Python __file__ 详解
  17. 常用传感器讲解五--声音传感器-(KY-037)
  18. H5怎么禁用长按复制的功能?
  19. 魔法少女小Scarlet
  20. C语言第十九讲——函数(2)

热门文章

  1. 服务器意外重启导致storm报错的问题处理
  2. Json格式转化为string格式
  3. JS基础之undefined与null的区别
  4. W: 无法下载 http://ppa.launchpad.net/fcitx-team/nightly/ubuntu/dists/jessie/main/binary-amd64/Packages
  5. 吴恩达 coursera ML 第十二课总结+作业答案
  6. vivado实现基本D触发器
  7. 系列笔记 | 深度学习连载(4):优化技巧(上)
  8. VTK修炼之道57:图形基本操作进阶_点云配准技术(LandMark标记点算法和坐标系显示方法)
  9. 用Schema来决定CSV文件的字段类型
  10. Delphi的Socket编程要分几步?