首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

Android多媒体开发(五)————利用Android AudioTrack播放mp3文件

2012-09-14 
Android多媒体开发(5)————利用Android AudioTrack播放mp3文件/*****************************************

Android多媒体开发(5)————利用Android AudioTrack播放mp3文件

/********************************************************************************************
 * author:conowen@大钟                                                                                                                          
 * E-mail:conowen@hotmail.com                                                                                                             
 * http://blog.csdn.net/conowen                                                                                                              
 * 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。     

 ********************************************************************************************/



1、Android AudioTrack简介

          在Android中播放声音可以用MediaPlayer和AudioTrack两种方案的,但是两种方案是有很大区别的,MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。而AudioTrack只能播放PCM数据流。

           事实上,两种本质上是没啥区别的,MediaPlayer在播放音频时,在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack,最后由AudioFlinger进行混音,传递音频给硬件播放出来。利用AudioTrack播放只是跳过Mediaplayer的解码部分而已。Mediaplayer的解码核心部分是基于OpenCORE 来实现的,支持通用的音视频和图像格式,codec使用的是OpenMAX接口来进行扩展。因此使用audiotrack播放mp3文件的话,要自己加入一个音频解码器,如libmad。否则只能播放PCM数据,如大多数WAV格式的音频文件。

参考上一篇博文。

http://blog.csdn.net/conowen/article/details/7727145


2、使用Mediaplayer的不足

     MediaPlayer提供了5个setDataSource方法,如其中一个,虽然可以设置文件流起始地址与文件流长度。


Android多媒体开发(五)————利用Android AudioTrack播放mp3文件


@LibmadActivity.java

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >    <TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="AudioTrack"    />          <Button      android:id = "@+id/buttonPlay"    android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="PLAY"    />        <Button      android:id = "@+id/buttonPause"    android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="PAUSE"    />       </LinearLayout>




热点排行