您现在的位置是:首页 > 正文

Android 音频开发——AudioTrack播放

2024-02-01 00:41:50阅读 2

Android 音频——PCM转WAV
Android 音频开发——AudioRecord录音

 AudioTrack类用来管理、播放单个音频资源,它只能播放PCM数据,其他音频格式(aac、amr、opus、flac等)需要经过解码成PCM才能使用。

运行模式

AudioTrack可以运行两种模式:

  1. 流模式
  2. 静态模式

流模式
 可以将连续的数据流写入AudioTrack,进行播放。播放音频数据块时,这种模式最有用。
如:

  • 声音持续的时间太长,无法容纳在内存中;
  • 由于音频数据的特性(太大的采样率,每个采样的比特数…)而太大而无法容纳在内存中;
  • 在播放先前排队的音频时收到或生成的声音。

静态模式
 当处理很短的音频并且需要以最小延迟播放时,应该选择静态模式。对于经常播放的UI和游戏声音而言,静态模式将是首选方式,并且可能会产生最小的开销。

缓冲区

 当创建AudioTrack时,AudioTrack将初始化其关联的音频缓冲区。在构造期间指定的此缓冲区大小决定了AudioTrack在数据用尽之前可以播放多长时间。
 对于静态模式,此大小是可以从中播放的最大音频数据大小。
 对于流模式,数据将以小于等于此缓冲区大小的块的形式写入音频接收器。

AudioTrack播放

这里主要说一下AudioTrack的流模式使用。
基本步骤

  1. 获取最小缓冲区大小(创建AudioTrack对象所需);
  2. 创建AudioTrack对象;
  3. 调用AudioTrack play方法,开始播放。
  4. 写入音频数据;
  5. 停止播放
  6. 释放对象。

1 获取最小缓冲区大小

int minSize = AudioTrack.getMinBufferSize(sampleRate

网站文章

  • 网站服务器内存满了,云服务器内存满了怎么办

    网站服务器内存满了,云服务器内存满了怎么办

    很多站长在使用云服务器的时候,总是会遇到内存不足的情况,这种现象就是我们在家用电脑时的内存不足时一样,令人烦恼,因为内存不足,将影响正常的使用,它是服务器的核心点,那么云服务器内存满了怎么办?有没有可...

    2024-02-01 00:41:20
  • 基金投资入门教程-----开扒各种基金

    基金投资入门教程-----开扒各种基金

    基金投资入门教程-----开扒各种基金2、开扒各种基金基金的分类按投资品种分货币基金与债券基金股票基金与混合基金按交易渠道分按运作方式分按投资方式分基金投资入门教程-----开扒各种基金2、开扒各种基金基金的分类按投资品种分货币基金与债券基金股票基金与混合基金按交易渠道分按运作方式分按投资方式分...

    2024-02-01 00:41:13
  • 为什么Redis不直接使用C语言的字符串

    为什么Redis不直接使用C语言的字符串

    众所周知Redis有以下几种常见的数据类型 String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Sorted set(有序集合)、Stream(流)、Geo(地理空间索引)、Bitmap(位图)、HyperLogLog(基数统计)等。我们最常用的就是String(字符串)类型,String类型既可以存储字符串,也可以存储数字,甚至可以直接进行数值运算。

    2024-02-01 00:41:06
  • 新型作战概念下的军用通信系统发展趋势

    新型作战概念下的军用通信系统发展趋势

    公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨,并不意味着支持其观点或证实其内容的真实性。版权归原作者所有,如转载稿涉及版权等问题,请立即联系我们删除。源自:防务快讯 ...

    2024-02-01 00:40:58
  • poj2376 贪心

    如题:http://poj.org/problem?id=2376 Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12069 Accepted: 3140 Description Farmer John is assigni

    2024-02-01 00:40:30
  • 计算机数据库原理与应用,普通高等学校计算机科学与技术应用型规划教材:数据库原理与应用...

    《数据库原理与应用》系统全面地阐述数据库系统的基础理论、基本技术和基本方法。全书共分为10章,主要介绍了数据库基础理论、关系模型、关系数据库标准语言SQL、关系数据库设计理论、数据库安全保护、数据库设...

    2024-02-01 00:40:25
  • Android模块化项目模块间数据交互解决方案

    Android模块化项目模块间数据交互解决方案

    之前呢,也做过一个关于模块化业务分离的架构方案,这篇帖子想分享一下关于模块间的数据交互的方案。模块化架构,基础的可以通过创建多个module来把业务进行区分和代码的解耦。为了解耦,让module可拆卸,可移植,那么业务模块间是不会有任何的依赖和引用的,在这样的情况下,我们如何才能让模块间联系起来,进行数据交互呢。 下面来对我项目的思路做个概述。1.涉及框架 路由框架, ...

    2024-02-01 00:40:17
  • You need to use a Theme.AppCompat theme (or descendant) with this activity. 最新发布

    You need to use a Theme.AppCompat theme (or descendant) with this activity. 最新发布

    【代码】You need to use a Theme.AppCompat theme (or descendant) with this activity.

    2024-02-01 00:39:47
  • 线性相关 线性无关

    1.线性相关(linearly dependent)与线性无关的(linearly independent)定义 线性相关的定义为: 对于一组向量v1,v2,⋯ ,vnv_1, v_2, \cdots...

    2024-02-01 00:39:39
  • 点云相关理论

    点云相关理论

    再以控制点为基站直接将扫描的多测站的点云数据与其拼接,即可将扫描的所有点云数据转换成工程实际需要的坐标系。由于目标物的复杂性,通常需要从不同方位扫描多个测站,才能把目标物扫描完整,每一测站扫描数据都有...

    2024-02-01 00:39:32