问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android音频播放

发布网友 发布时间:2022-11-21 14:29

我来回答

1个回答

热心网友 时间:2024-03-21 15:38

最近需要在Android的客户端中使用PCM声音播放和录制,简单学习了一下。有不正确的地方还请指出。

首先有几个概念需要了解一下:采样频率、声道数、采样位数。

采样频率一般是sample rate, 代表的是数字化音频时每秒采样的次数。常见的有44.1KHz(CD品质)、48KHz等。

这个很好理解,单声道Mono就是声音从一个方向传出来;双声道Stereo也叫立体声,声音是从两个方向传来。通常的流行音乐中,仔细听能发现每个声道可能侧重不同的乐曲声部,比如左声道吉他,右声道钢琴,人声似乎两个声道都有,听起来就像站在中间一样。(这里没有考证,随便举例)

每一个采样都是一个数据点,采样位数是指这个数据点使用了几位来记录。AudioTrack类只支持8位和16位的PCM音频。8位就是2的8次方,即256个值;而16位则是2的16次方,有65536个值。

这个在音频的编解码中还是比较常用的。在PCM格式中,1秒钟音频的数据大小是SampleRate×Channel×Bit/8,单位是byte字节。由于PCM本身没有音频帧的概念,所以通过这个公式就能计算出任意时长音频的大小,或者得到任意大小音频的时长。如果规定1个音频帧是“每个声道256个采样”,双声道下就是512个采样,那么1帧的数据量就是256×Channel×Bit/8,同理可以推断出1秒钟有多少音频帧等等。音频帧的概念在各种编解码中各有不同,但计算公式大同小异,这里不展开。

Android中音频的播放使用的是AudioTrack类,具体用法非常简单。
首先设置buffer大小。AudioTrack播放时需要先写入buffer,如果这个buffer没有写满,那么这部分是不会播放的。所以buffer不能设置太小,这样会导致播放不连贯;而buffer也不能设置太小,这样不间断写入会消耗许多CPU资源。AudioTrack自带了getMinBufferSize方法可以给出一个最小buffer,一般用这个值就可以。getMinBufferSize方法三个参数分别是sample rate、channel和bit。

设置完buffer size就可以实例化一个AudioTrack。其中第一个参数streamType是指不同的音频流类型,包括STREAM_MUSIC、STREAM_ALARM、STREAM_VOICE_CALL、STREAM_RING等,是Android对不同音频的分类。中间三个参数很好理解,第四个是buffer size,刚刚计算出来了。最后一个参数mode有两种:MODE_STREAM和MODE_STATIC。前者是以流形式播放,后者则是一次性全部写入然后播放。

调用实例的play()方法就可以开始播放了。不过播放得要有数据吧?要填写数据就要用到write()方法。write方法中第一个参数是一个byte[]类型,是要写入的数据源,可以是从文件流中读取出来的;第二个参数offset是初始位移,即从source的哪个位置开始;第三个参数则是输入长度。

当write方法写满一个AudioTrack的buffer时,就会有声音播放出来了。
当播放完成后记得要把AudioTrack停止并释放。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 电脑键盘怎么打出摄氏度符号? 具体操作 买丽台显卡买到英迈的怎么办 戴尔外包的缺点!!!100字-200字 都知道戴尔资源外包的好处。谁知道戴尔外... dell售后服务外包给什么公司了 DELL外派的第三方员工工资待遇有保障吗??? 戴尔是离岸外包吗 戴尔外包公司值得去吗 车后保险杠被幢.须修花多少钱 准少英迈中或教增年的或什么意思 ...订单里面好像是行项目里SLCA ,RQTV这2个是什么东东?另外本人刚学... SAP 订单模型的编排方式概述 U8 12.0MRP计划后在MRP计划维护中查询不到订单行,是什么问题吗? 订单中的“行”是什么意思啊??比如说“一份订单5行”…知道的人帮忙解答... 准少英迈的原文 匿名回答什么意思? 一个人去吃烤鱼贵不贵!需要多少钱 一个人可以吃烤鱼饭吗? 有哪些好听的雨天的歌? imagination、、vegetable、这英文怎么念? 建鸿210电脑商标机故障定位不准怎么办 Android 用声音控制 帧动画 北京至乌鲁木齐最经济行程 郑州市半户外单色LED显示屏的价格多少 怎么计算? 柔弗主功效是什么?有生发功能吗? 移动奔腾4 和p-m4有什么区别 ? 奔腾x40和长城m4哪个车比较好,性价比高 长城m4和一汽奔腾欧朗哪个好 奔腾x40奇瑞瑞虎3x传祺gs3长安cs35吉利缤越长城m4名爵zs哪个动力好空... 我的CPU是奔腾E6700的双核主版是华硕M4X1显卡是七采虹Ct520的... ...酷睿E7500/2G/320G/19寸和联想扬天 M4660D 奔腾G645/2GB/500GB/2... ...Processor 2500+好像有中文名吧,它相当于奔腾系列的什么? 想开个网店卖零食,代理好还是进货好? 孩子假期一个人在家自娱自乐的说说 开网店代理小零食赚钱吗? 我想代理网店,就是在空间朋友圈里那种,买什么的都有的那种,零食,面膜... 做淘宝零食代理靠谱吗? TC512和512显卡有什么实质性的区别? 游戏要求配置中要求512,我是TC512 区别多大? tc512是什么意思 我的两条腿有一点小红点是什么为事