我正在使用AudioTrack类在一个适用于Android的应用程序中工作,有时会收到异常“无效的音频缓冲区大小”。由于我打算使用FFT,因此我将缓冲区大小设为2的幂,从那时起,有时会遇到此异常。有什么想法吗?
谢谢,
丹尼尔
我的代码非常简单:
private void playTrack(short []buffer){
try{
Log.i(TAG,"Play track, Buffer size: "+buffer.length );
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
mAudioIn.getFrequency(),
mAudioIn.getChannelConfig(),
mAudioIn.getAudioEncoding(),
buffer.length,
AudioTrack.MODE_STREAM);
audioTrack.play();
audioTrack.write(buffer, 0, buffer.length);
}catch(Throwable t){
Log.e(TAG,"Play track, something's wrong: "+t.getMessage()+ " When buffer size is:"+buffer.length );
}
}`enter code here`
最佳答案
我刚刚意识到,您不能使用奇数作为缓冲区大小。尝试调整您的尺寸并执行以下操作:
if (size % 2 == 1)
size++;`
这将使一个奇数偶。
关于android - 您是否曾尝试在Android中使用缓冲区大小为2的幂的Class AudioTrack?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6722422/