第二部分 MediaPlayer的概述

  本文 主要介绍的是 Android 中很重要也最为复杂的媒体播放器( MediaPlayer )部分的架构。对于 Android 这样一个完整又相对复杂的系统,一个 MediaPlayer 功能的实现不在其具体的功能,而是具体功能如何适应 Android 系统 Android MediaPlayer 的主要具体实现在 OpenCore Player 中,这部分不是本文的关注点。本文关注的是 MediaPlayer 系统的架构,其他的一些 Android 的应用程序也使用类似的架构。

       对于开源事业在中国的发展, hanchao3c 认为应该共享的不仅仅是代码,文档、设计思想、理念甚至对于技术的理解都应该得到充分的共享。 Android 为中国人进入大规模的开源项目提供了很好的机遇,对于走在技术前沿的人们,不应将技术视为私有财产,而应该将自己理解更好地奉献给大众,提高大众的学习速度,从中也可以得到反馈,从而促进自己的进步。仅以此文奉献给所有关系技术的朋友,希望可以抛砖引玉,促进我们共同的技术进步!

第一部分 MediaPlayer概述

        Android
MediaPlayer 包含了 Audio video 的播放功能,在 Android 的界面上, Music Video 两个应用程序都是调用 MediaPlayer 实现的。

        MediaPlayer
底层是基于 OpenCore( PacketVideo) 的库实现的,为了构建一个 MediaPlayer 程序,上层 还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。

以开源的Android为例 MediaPlayer 的代码主要在以下的目录中:
JAVA 程序的路径:
packages/apps/Music/src/com/android/music/



JAVA 类的路径:
frameworks/base/media/java/android/media/MediaPlayer.java

JAVA 本地调用部分(JNI):
frameworks/base/media/jni/android_media_MediaPlayer.cpp
这部分内容编译成为目标是libmedia_jni.so

主要的头文件在以下的目录中:
frameworks/base/include/media/

多媒体底层库在以下的目录中:
frameworks/base/media/libmedia/
这部分的内容被编译成库libmedia.so

多媒体服务部分:
frameworks/base/media/libmediaplayerservice/
文件为mediaplayerservice.h和mediaplayerservice.cpp
这部分内容被编译成库libmediaplayerservice.so

基于OpenCore的多媒体播放器部分
external/opencore/
这部分内容被编译成库libopencoreplayer.so

         从程序规模上来看, libopencoreplayer.so 是主要的实现部分,而其他的库基本上都是在其上建立的封装和为建立进程间通讯的机制。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值