首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android音频跟踪getMinBufferSize()在不同设备上返回不同的值

Android音频跟踪getMinBufferSize()在不同设备上返回不同的值
EN

Stack Overflow用户
提问于 2016-02-16 02:38:49
回答 2查看 1.8K关注 0票数 1

我有一个音频合成应用程序,它使用缓冲区大小和一个查找栏值来改变节奏。缓冲区越小,速度就越快。从缓冲区大小中减去查找条值;查找条移动得越远,速度就越快。

缓冲区大小使用以下方法计算:

代码语言:javascript
复制
int buffersize = AudioTrack.getMinBufferSize(sr, AudioFormat.CHANNEL_OUT_MONO,
                    AudioFormat.ENCODING_PCM_16BIT);

在三星Galaxy S6手机上,返回的缓冲区大小为10584。滑块的底部和顶部的值分别为60 bpm和192 bpm。

然而,在一个7英寸的LG G Pad 7.0上,返回的缓冲区大小仅为3528。因此,开始的速度大约是180到200 bpm,而不是期望的60 bpm。

我在考虑使用基于屏幕大小的硬编码缓冲区大小,但这只是创可贴。

为什么相同的计算会跨两个设备返回两个不同的缓冲区大小?如何计算缓冲区大小?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-16 03:43:24

众所周知,设备之间的缓冲区大小是不同的。它是针对底层硬件进行优化的,这些硬件将有所不同。这就是为什么有一个计算这个值的方法,而不是关于如何自己计算它的一些指导。

AudioTrack缓冲区大小与速度无关。为了有效地操作,AudioTrack必须分配的字节数是最小的。发送给AudioTrack的字节可以包含任何您想要播放的内容,只要它符合用于创建AudioTrack的规范。

票数 1
EN

Stack Overflow用户

发布于 2019-03-05 10:18:24

此外,附加的注意事项,它甚至可以(很少)在同一设备上发生变化。我在Nexus5X上见过一次,因为我不知道原因是什么,这一次,最小缓冲区大小是方法通常返回的两倍。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35422709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档