每天一点点音视频_AudioTrack的两种播放模式

AudioTrack 有两种模式, 一种是以流的方式,打开后每次写入一部分数据,另一种是以静态方式,一次写入整个音频数据。

流的方式适合大的音频文件或者动态接受或者生成的音频。后一种比较有意思,说的是音频数据动态生成的,因为播放的是 PCM, 我们时可以动态生成一个标准的正弦波的。

静态的方式适合小的文件,比如游戏中的音效。

另外, 两种模式的使用方式也不同

之前提到过, 流的方式播放音频时,使用方式如下:

  1. 创建
  2. 开始
  3. 写入数据, 可以多次, 这一步是同步的,阻塞的
  4. 停止

第三步的写入操作是阻塞的,也就是说,写入的数据,要完全写入底层的buffer才会返回, 而要写入底层的buffer,需要等到底层把之前的数据播放输出,空出buffer。

而在静态的方式播放音频时, 使用方式如下:

  1. 创建
  2. 一次性写入所有音频数据
  3. 播放

这里的写入是在播放之前, 而且这里的写入是非阻塞的,所以这就适合在 UI 使用,来实现音效播放。

明天: 每天一点点音视频_AudioTrack播放动态生成的声波


参考 例子 这个网站很棒呀