Android 音频——PCM转WAV
Android 音频开发——AudioRecord录音
AudioTrack类用来管理、播放单个音频资源,它只能播放PCM数据,其他音频格式(aac、amr、opus、flac等)需要经过解码成PCM才能使用。
运行模式
AudioTrack可以运行两种模式:
- 流模式
- 静态模式
流模式
可以将连续的数据流写入AudioTrack,进行播放。播放音频数据块时,这种模式最有用。
如:
- 声音持续的时间太长,无法容纳在内存中;
- 由于音频数据的特性(太大的采样率,每个采样的比特数…)而太大而无法容纳在内存中;
- 在播放先前排队的音频时收到或生成的声音。
静态模式
当处理很短的音频并且需要以最小延迟播放时,应该选择静态模式。对于经常播放的UI和游戏声音而言,静态模式将是首选方式,并且可能会产生最小的开销。
缓冲区
当创建AudioTrack时,AudioTrack将初始化其关联的音频缓冲区。在构造期间指定的此缓冲区大小决定了AudioTrack在数据用尽之前可以播放多长时间。
对于静态模式,此大小是可以从中播放的最大音频数据大小。
对于流模式,数据将以小于等于此缓冲区大小的块的形式写入音频接收器。
AudioTrack播放
这里主要说一下AudioTrack的流模式使用。
基本步骤
- 获取最小缓冲区大小(创建AudioTrack对象所需);
- 创建AudioTrack对象;
- 调用AudioTrack play方法,开始播放。
- 写入音频数据;
- 停止播放
- 释放对象。
1 获取最小缓冲区大小
int minSize = AudioTrack.getMinBufferSize(sampleRate