frameworks/base/media/libmediaplayerservice/ 目录是MediaPlayer 服务器端代码,实现了媒体播放,获取元数据,录像录音。

MediaPlayerService主要实现在MediaPlayerService.cpp中,是服务器端媒体操作的主接口,MediaPlayerService根据客户端请求的操作类型不同,创建不同的client代理,跟Client应用交互。

StagefrightPlayer.cpp是Android内置缺省播放器,真正的播放器AwesomePlayer在framework/base/media/libstagefright/下。

MidiFile.cpp 是Android内置的midi文件类型的播放器

Android把MediaPlayerService获取媒体文件元数据的代码移到MetadataRetrieverClient.cpp和MidiMetadataRetriever.cpp中(Midi文件的元数据获取和普通媒体文件方式有所区别,所以单独提出了MidiMetadataRetriever.cpp)

Android把Recorder相关的代码提取出来放入了MediaRecorderClient.cpp中,这个类实际只起到了中转作用,具体的recorder有Android内置的stagefright recorder,以及PVMediaRecorder


Mediaplayer Service工作流程相当简单

设置阶段:

  • client应用发起申请,MediaPlayer服务器创建对应的client代理
  • client调用setDataSource接口,MediaPlayer根据文件内容 后缀名或者url类型,选择相应的播放器
操作阶段:
  • client发送播放命令,MediaPlayer Service端调用相应播放器的播放命令

  • client发送metadata操作命令,MediaPlayer Service端的 MetadataRetrieverClient调用不同的metadata获取插件获取metadata
  • client发送recorder命令,MediaPlayer Service端的MediaRecorderClient调用不同的recorder插件录音录像。







Midi格式

Midi是一类比较特殊的媒体文件,普通的声音文件(*.wav文件)是计算机直接把声音信号的模拟信号经过取样——量化处理,变成与声音波形对应的数字信号,存储在文件中,而mid文件只是记录了演奏乐器的各种信息和指令,如用哪一种乐器,什么时候按某个键,力度怎么样等等,至于播放时发出的声音,那是通过播放软件或者音源的转换而成的。


Metadata

我的理解是除去媒体内容外,描述媒体文件的数据,包括类型,大小,日期,Author,duration,width,height,甚至thumbnail都可算做元数据

更多相关文章

  1. React Native 项目运行在安卓模拟器Http请求报错
  2. Android(安卓)Vendor Test Suite (VTS) 的概念、作用及测试方法
  3. Android开发者指南(9) —— ProGuard
  4. Android(安卓)framework add service
  5. Android-配置文件中设置“android:clickable="false"无效的原因
  6. Android(安卓)jni初探
  7. Android调用系统分享功能总结
  8. 总结:Android之Gradle总结
  9. 利用FRIDA攻击Android应用程序(三)

随机推荐

  1. 人机工程简史
  2. 算法的秘密+
  3. 人的认知特性与分析
  4. 为什么深绿系统不好用?
  5. 人的感觉分析
  6. 焦波:俺爹俺娘
  7. 小议人工智能为什么“不智能”
  8. 为什么要写《追问人工智能》一书?
  9. “自主”的概念
  10. 第二天作业(课程表)