MediaPlayer和AudioTrack播放Audio的区别与联系
推荐于2017-10-03 · 知道合伙人互联网行家
其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。
而AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器,所以只能播放不需要解码的wav文件。
当然两者之间还是有紧密的联系的,MediaPlayer在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack,AudioTrack再传递给AudioFlinger进行混音,然后才传递给硬件播放。
所以是MediaPlayer包含了AudioTRack。
通过查看API可以知道,MediaPlayer提供了5个setDataSource方法,分为三类,一类是传递播放文件的字符串路径作为参数,例如直接取sd卡里mp3文件的路径,一类是传递播放文件的FileDescriptor文件描述符作为播放的id,例例如从db中查询的音频文件的id,就可以直接赋给MediaPlayer进行播放。还有一类是Uri类型的资源文件,用于播放content uri文件。
2018-06-29 · 专业app开发、互联网营销策划
MediaPlayer
定义
媒体播放器,又称媒体播放机,通常是指电脑中用来播放多媒体的播放软件,把解码器聚集在一起,产生播放的功能。
发展领域
一些广告画面的播放器也可称为媒体播放器,如分众传媒的视频媒体播放器、众普传媒的镜面媒体播放器等;公交电视同样是一种媒体播放器。
类型
flash播放器,自动图片播放器 V1.8。
功能
指定目录可以显示出该目录下的所有类型的图片文件包括jpg,gif,jpeg,png,bmp等格式。
AudioTrack
定义
AudioTrack主要是用来播放声音的。
功能
AudioTrack贯穿了Java层,JNI层和Native层。
原理
MediaPlayer在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack,AudioTrack再传递给AudioFlinger进行混音,然后才传递给硬件播放,所以是MediaPlayer包含了AudioTRack。
两者区别
MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。
MediaPlayer会在framework层创建对应的音频解码器。
AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。
AudioTrack不创建解码器,所以只能播放不需要解码的wav文件。