1. Media Framework 层次

(1) 应用层

Music, VideoPlayer

(2) JAVA层

MediaPlayer : frameworks/base/media/java/android/media/MediaPlayer.java

(3) JNI

JNI_MediaPlayer -- libmedia_jni.so

frameworks/base/media/jni/android_media_player.cpp

(4)Server Proxyer

libmedia -- libmedia.so

frameworks/av/media/libmedia/MediaPlayer.cpp

(5) Server

libmediaplayerservice -- libmediaplayerservice.so

frameworks/av/media/libmediaplayerservice/

(6) Protocal

HTTP / RTSP / HTTPLive

(7.1)Stagefright

libstagefright -- libstagefright.so

frameworks/av/media/libstagefright/StageFrightPlayer.cpp

(7.2) Nuplayer


PS:

流媒体调用NuPlayer,本地播放调用stagefright,stagefright会调用AwesomePlayer相应的接口,最后调用NuPlayer。

按照目前的趋势,之后NuPlayer将会完全取代AwesomePlayer。


2. MediaPlayer Classes Structure

接口定义:

    IMediaPlayerService.h

    IMediaPlayerClient.h

    MediaPlayer.h

框架实现:

    MediaPlayer.cpp

    MediaPlayerService.cpp

MeidaPlayer的具体功能在PVPlayer(库 libopencoreplayer.so)中的实现。


Android Media Framework 总纲_第1张图片


3. StageFright

StageFright是处理视频的模块:libstagefright,其核心未AwesomePlayer。

Android Media Framework 总纲_第2张图片

1.mediaPlayerservice调用Stagefright相应的接口

2.Stagefright调用AwesomePlayer相应的接口

3.AwesomePlayer调用OMXCode读取ES数据,并且进行解码的处理

4.OMXCodec调用MediaSource的read函数来获取音视频的数据

5.OMXCodec调用Android的IOMX接口,其实就是Stagefrightde中的 OMX实现

6. OMX调用OMXMaster,而OMXMaster调用OMXPluginBase的接口,这里也可以获取外部的Codec的插件,最终调用对应的解码组建来完成解码,不同解码组件不太相同,后面会做介绍

7.解码完成后,通过OMXcodec返回的裸码流数据会在Awesomeplayer中调用Render模块,实现渲染,从而给用户提供了画面





更多相关文章

  1. android的liveview装载数据
  2. Android 将从网络获取的数据缓存到私有文件
  3. Android SQLite数据库操作
  4. 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第六
  5. SQLite语法与Android数据库操作
  6. [置顶] Android 5.1 open data flow 数据开启流程
  7. 系出名门Android(9) - 数据库支持(SQLite), 内容提供器(ContentP
  8. android中的bundle传送数据
  9. Android Room联合AsyncListUtil实现RecyclerView分页加载ORM数据

随机推荐

  1. Android开发周刊 第四期
  2. 【AS基础篇二:线性布局和相对布局的使用】
  3. 安卓 Android之开发简单小应用(一)
  4. Android联系人表结
  5. 安卓中contentDescription属性的作用详解
  6. Android图片自适应不同分辨率屏幕问题
  7. android中的apk签名
  8. GifView控件,android显示gif图片
  9. Android OOM内存溢出解决方案之一
  10. Android Studio 进阶配置