【发布时间】:2016-03-14 23:15:29
【问题描述】:
在我的 Android 应用程序中,我使用 AudioTrack API 来输出从 RFCOMM 蓝牙连接接收到的音频字节。音频按预期播放,非常清晰。但是,由于 AudioTrackShared.cpp 中的以下断言,应用程序偶尔会崩溃:
stepCount <= mUnreleased && mUnreleased <= mFrameCount
我不太确定这个断言意味着什么,但有人知道什么可能导致这个问题吗?如果需要,我可以提供额外的源代码:
我对 AudioTrack 的设置:
int minSize = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT);
mAudioPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT, minSize * 4, AudioTrack.MODE_STREAM);
【问题讨论】:
-
您是否重用了写入 AudioTrack 的缓冲区?
-
@MimmoGrottoli 每次写入 AudioTrack 时,我都会创建一个大小为 64 的新数组。
-
是你从 AudioTrach.getMinBufferSize 得到的值吗?
-
不是,但我不明白为什么会导致问题?
-
我相信你用很少的字节喂 AudioTrack,但这是一个假设。您在创建 AudioTrack 时是否尝试过仅使用 minSize 而不是 minSize * 4?
标签: java android audiotrack