Android(4.4)音频系统之MediaPlayerService服务

本文深入解析Android 4.4中的MediaPlayerService,它是系统服务,负责视频播放、录音录像和元数据获取。MediaPlayerService在mediaserver中实现,根据客户端请求创建不同操作的代理,如AudioPlayerService、MetadataRetrieverClient和MediaRecorderClient。它使用StagefrightPlayer作为内置播放器,MediaRecorderClient用于录音录像。同时,文章介绍了Midi文件格式和元数据的概念,并详细解读了MediaPlayerService的关键函数。
摘要由CSDN通过智能技术生成

代码目录:frameworks/av/media/libmediaplayerservice

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

在mediaserver的main_mediaserver.cpp文件中添加了MediaPlayerService服务:

AudioPlayerService::instantiate();

MediaplayerService是一个系统服务,Android 视频播放,录音录像,元数据获取等客户端应用与MediaplayerService交互,由MediaPlayerService实现视频的播放,录像,元数据获取等操作。

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

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

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

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

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

MediaplayerService工作流程相当简单

设置阶段

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

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

Midi格式介绍

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

Metadata

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


MediaPlayerService.cpp中一些函数介绍:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值