我有一个安卓AudioTrack,如下所示:
private AudioTrack mAudioTrack;
int min = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT);
mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, min, AudioTrack.MODE_STREAM);
mAudioTrack.play();然后我会填上:
mAudioTrack.write(buffer, 0, bufsize);我希望这首曲子能有2秒的延迟播放。你知道我该怎么做吗?提前感谢你的任何好主意。
发布于 2013-01-04 00:42:54
这是我自己问题的答案,如果有人感兴趣的话。这个想法是创建一个临时缓冲区来创建和存储音频“等待时间”。
首先,初始化:
final int mSizeTable = 300;
private byte[][] mTableAudioBuffer = byte[mSizeTable][];
private int mCountAudioBuffer = 0;
...
mAudioTrack.play();然后,我会填入:
mTableAudioBuffer[mCountAudioBuffer] = buffer.clone();
int ret = 0;
if (mTableAudioBuffer[(mCountAudioBuffer + 1) % mSizeTable] != null)
ret = mAudioTrack.write(mTableAudioBuffer[(mCountAudioBuffer + 1) % mSizeTable], 0, bufsize);
mCountAudioBuffer = (mCountAudioBuffer + 1) % mSizeTable;
return ret;显然,在内存方面,它并不是最优的,如果你想要很大的延迟,它可能是贪婪的。
https://stackoverflow.com/questions/13619375
复制相似问题