我正在使用音轨以流模式播放不同的声音。我想知道是否有办法知道每个声音何时/结束播放。
我像这样创建音轨:
AudioTrack tmpAudioTrack = new AudioTrack(
STREAM_TYPE,
SAMPLE_RATE,
CHANNEL_CONFIG_TYPE,
AUDIO_FORMAT_TYPE,
getOptimalBufferSize(),
AUDIO_TRACK_MODE);'
并在后台线程中启动它:
backround_thread = new Thread(new MyRunnable(aTrack));
backround_thread.start();
我在可运行文件中写出这样的每个声音:
byte generatedSnd[] = new byte[2 * beepSamples];
<code for filling the buffer with sound here>
int bytesWritten = track.write(generatedSnd, 0, generatedSnd.length);
是否可以使用任何 AudioTrack API(如 setNotificationMarkerPosition、setLoopPoints 或 setPositionNotificationPeriod)来完成此操作?它们是如何工作的?
每个声音可以是不同的持续时间。我认为这是关键。
我不完全理解这些 API 的文档。每一帧都与样本相同吗?如何为每个声音的开始/结束位置指定一个标记?
谢谢,