LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
音频框架
落落 2021-09-22

APP -> Framework -> Libraries ->HAL 大致分为四部分

APP:音乐/视频播放器

Framework(框架):MediaPlayer和MediaRecorder、AudioTrack和AudioRecorder,安卓系统为控制音频系统提供了AudioManager、AudioService、AudioSystem类,这些都是FrameWork为便利上层应用开发设计的;

MediaPlayer和AudioTrack区别是MediaPlayer可以播放多种格式的音频文件,而AudioTrack只能播放已解码的PCM流,AudioTrack不创建解码器,所以只能播放不需要解码的wav格式文件。当然两者之间还是有紧密的联系的,MediaPlayer在framework层还是会创建AudioTrack,把解码后的PCM流传递给AudioTrack,AudioTrack在传递给AudioFlinger进行混音,然后才传递给硬件播放。

AudioRecorder和AudioTrack是安卓系统对外提供的接口类,AudioRecorder主要用于完成音频数据的采集,而AudioTrack则是负责音频数据的输出。

MediaRecorder和AudioRecorder都可以录制音频,区别是MediaRecorder录制的音频文件是经过压缩后的,需要设置编码器。并且录制的音频文件可以用系统自带的Music播放器而播放。而AudioRecorder录制的是PCM格式的音频文件,需要用AudioTrack来播放,AudioTrack更接近底层。在用MediaRecorder进行录制音频时,最终还是会创建AudioRecorder用来和AudioFlinger进行交互。

Libraries:系统服务AudioFlinger和AudioPolicyService,音频体系中另一个重要的系统服务是MediaPlayerService。

AudioFlinger管理着系统中的输入输出音频流,并承担着音频数据的混合,通过读写音频硬件实现音频数据的输入输出功能;AudioPolicyService是音频系统的策略控制中心,掌管系统中声音设备的选择和切换、音量控制等;AudioFlinger是音频系统的核心,从AudioTrack来的数据最终都会在这里处理,并被写入到音频的硬件层;AudioPolicyService根据用户配置指导AudioFlinger加载设备接口,起到路由功能。

HAL:硬件抽象层是AudioFlinger直接访问的对象,AudioFlinger并不直接调用底层的驱动程序;AudioFlinger上层的模块只需要与它进行交互就可以实现音频相关的功能了。AudioPolicyService并不是一个真实的设备,只是采用虚拟设备的方式来让厂商可以方便地定制出自己的策略,抽象层的任务是将AudioFlinger/AudioPolicyService真正地与硬件设备关联起来。


推荐文章
评论(0)
联系我们|招贤纳士|移动客户端|风格模板|官方博客|侵权投诉 Reporting Infringements|未成年人有害信息举报 0571-89852053|涉企举报专区
网易公司版权所有 ©1997-2024  浙公网安备 33010802010186号 浙ICP备16011220号-11 增值电信业务经营许可证:浙B2-20160599
网络文化经营许可证: 浙网文[2022]1208-054号 自营经营者信息 工业和信息化部备案管理系统网站 12318全国文化市场举报网站
网信算备330108093980202220015号 网信算备330108093980204230011号
分享到
转载我的主页