Android(安卓)Media Framework 总纲
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)中的实现。
3. StageFright
StageFright是处理视频的模块:libstagefright,其核心未AwesomePlayer。
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模块,实现渲染,从而给用户提供了画面
更多相关文章
- Android开发中WebView与js互相调用
- Quick_Cocos2d_x V3.3 Protobuf Android
- FregServer进程,获取ServiceManager代理对象
- 【翻译】(8-补丁1)Android接口定义语言(AIDL)
- 2011.07.19——— android intent 传递list或者对象
- Android应用程序键盘(Keyboard)消息处理机制分析(26)
- 【Fragment】 Android(安卓)Fragment生命周期详解(图文)
- Qt for Android获取手机序列号
- android之wifi体系架构源码流程分析