【发布时间】:2012-09-07 18:47:42
【问题描述】:
我正在使用音轨以流模式播放不同的声音。 我想知道是否有办法知道每个声音何时/结束播放。
我这样创建音轨:
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();
我在 runnable 中这样写每个声音:
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 的文档。每一帧都与样本相同吗?如何为每个声音的开始/结束位置指定标记?
谢谢,
【问题讨论】:
-
至少有人知道 setNotificationMarkerPosition 和 setPositionNotificationPeriod 的区别吗?
标签: android marker audiotrack