Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android开发:使用AudioTrack播放PCM音频数据【附源码】

众所周知,Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。但是该类只能对完整的音频文件进行操作,而不能直接对纯PCM音频数据操作。假如我们通过解码得到PCM数据源,又当如何将它们播放?没错,就是用AudioTrack这个类(MediaPlayer内部也是调用该类进行真正的播放音频流操作)下面这个DEMO演示了如何使用AudioTrack来播放PCM音频数据。废话不多说,先上效果图:工程代码结构也较为简单:简单说下思路,先把PCM音频数据从指定的路径文件读到内存,然后给AudioPlayer设置数据源,音频参数等,最后执行播放,暂停,停止等操作贴上部分类代码片段:
  1. public class AudioParam {  
  2.   
  3.     int mFrequency;                 // 采样率   
  4.       
  5.     int mChannel;                   // 声道   
  6.       
  7.     int mSampBit;                   // 采样精度   
  8.       
  9. }  
 
  1. public interface PlayState {  
  2.       
  3.     public static final int MPS_UNINIT = 0;             // 未就绪   
  4.       
  5.     public static final int MPS_PREPARE = 1;            // 准备就绪(停止)   
  6.       
  7.     public static final int MPS_PLAYING = 2;            // 播放中   
  8.       
  9.     public static final int MPS_PAUSE = 3;              // 暂停   
  10. }