Android Audio——使用 AudioTrack 播放音频

一、android平台上的音频播放

        Android SDK 提供了3套音频播放的API,分别是:MediaPlayer,SoundPool,AudioTrack。简单来说,MediaPlayer 更加适合在后台长时间播放本地音乐文件或者在线的流式资源; SoundPool 则适合播放比较短的音频片段,比如游戏声音、按键声、铃声片段等等,它可以同时播放多个音频; 而 AudioTrack 则更接近底层,提供了非常强大的控制能力,支持低延迟播放,适合流媒体和VoIP 语音电话等场景。

MediaPlayer播放音频介绍过了,这里介绍使用AudioTrack播放音频。实际上MediaPlayer也是调用MediaExtractor将音视频分离后再调用AudioDecoder进行解密,解码后的音频数据流再交给AudioTrack进行播放。因此AudioTrack支持PCM格式播放。

二、AudioTrack 的工作流程

(1) 配置参数,初始化内部的音频播放缓冲区

(2) 开始播放

(3) 需要一个线程,不断地向 AudioTrack 的缓冲区“写入”音频数据,注意,这个过程一定要及时,否则就会出现“underrun”的错误,该错误在音频开发中比较常见,意味着应用层没有及时地“送入”音频数据,导致内部的音频播放缓冲区为空。

(4)停止播放,释放资源

三、AudioTrack类的主要方法

方法 描述

AudioTrack(int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode)

构造函数

static int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat)

计算最小缓冲区大小,参数同构造函数中三个参数。

void play()

开始播放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值