我正在使用音頻軌道以流模式播放不同的聲音。 我想知道是否有方法知道每個聲音的生命/結束時間。AudioTrack - 如何知道聲音何時開始/結束?
我創建的音軌是這樣的:
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或se tPositionNotificationPeriod完成此任務嗎?他們是如何工作的?
每個聲音可以是不同的持續時間。我認爲這是關鍵。
我不完全理解這些API的文檔。每個框架與樣本相同嗎?如何爲每個聲音開始/結束的位置指定一個標記?
謝謝,
至少有人知道setNotificationMarkerPosition和setPositionNotificationPeriod之間的區別嗎? – mikemeli