Показать сообщение отдельно
Старый 06.09.2011, 08:12
Vasyaga вне форума Посмотреть профиль Отправить личное сообщение для Vasyaga Найти все сообщения от Vasyaga
  № 1  
Ответить с цитированием
Vasyaga

Регистрация: Feb 2009
Адрес: WS
Сообщений: 93
The bomb! Синхронное воспроизведение звуков

Работаю над онлайн сексенсером и, как многие здесь, столкнулся с проблемой синхронного воспроизведения звуков. Итак, исходные данные: Есть 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. Стало лучше, но всё равно звук сбивается!!!
Есть ли способ синхронного воспроизведения динамически подгруженных звуков?


Последний раз редактировалось Vasyaga; 06.09.2011 в 08:14. Причина: Дополнение