Работаю над онлайн сексенсером и, как многие здесь, столкнулся с проблемой синхронного воспроизведения звуков. Итак, исходные данные: Есть 3 одинаковых объекта Sound, загруженных из одного MP3. Я воспроизвожу их одновременно по таймеру каждые 500 миллисекунд.
Вариант I: Используем Sound как есть. В этом случае звуки не проигрываются синхронно. Постоянно кто-то отстает, кто-то убегает вперед.
Вариант II: Прочитал, что подобная задержка может быть вызвана тем, что звук в MP3 и необходимо процессорное время для декодирования. Воспользовался волшебным методом Sound.extract() из FlashPlayer10 Sound API и залил содержимое MP3 в ByteArray. После этого создал 3 звука и при помощи события SampleDataEvent напрямую записывал несжатое содержимое звука:

Код AS3:
private function sampleDataHandler(evt:SampleDataEvent) : void {
var writeCount:int = (pos + SOUND_BUFFER_SIZE) > ba.length ? (ba.length - pos) : SOUND_BUFFER_SIZE;
if(writeCount > 0) {
evt.data.writeBytes(ba, pos, writeCount);
} else {
pos = 0;
//trace('stopped');
}
pos += writeCount;
}
Размер буфера (SOUND_BUFFER_SIZE) использовал максимальный для уменьшения задержек - 65536. Стало лучше, но всё равно звук сбивается!!!
Есть ли способ синхронного воспроизведения динамически подгруженных звуков?