PDA

Просмотр полной версии : синхронизация звука и анимации


genius
05.07.2005, 02:47
пишу приложение, в котором очень важна точная синхронизация звукового ряда (mp3-файл) и визуального ряда (бит).

у меня есть два класса.

один - Timer, экземпляр его с момента вызова метода timer.start() начинает отсчитывать с нуля время (с помощью getTimer()) и "вещать" его всем заинтересованным объектам.

второй - MusicFile. всё, что он делает - это грузит mp3-файл и проигрывает его, когда надо.

когда экземпляр MusicFile успешно загружает свой mp3-шник, я стартую таймер и говорю мп3шнику начинать играть. а дальше начинается необъяснимое.

если назначить слушателя, который будет трейсить timer.getTime() и musicFile.mp3file.position, то в одинаковое время они стойко показывают разницу, причем всегда разную! за 10 секунд она составила от 63 до 127 мс, причем никакой системы на первый взгляд выявить не удалось.

почему так происходит? кто из них врет? кто-нибудь сталкивался с подобными проблемами? есть ли какие-нибудь пути решения?

заранее спасибо за вашу помощь :)

Dias
05.07.2005, 04:45
прикол в том что на обработку звука времени процу нужно меньше чем на обработку видео (математтические фоункции и все остальное)....
я использую следущие способы решения этой проблемы

1) зациклить звук - при сопровождении анимации играет повторяющяяся мелодия
2) разбить звук на множество частей и вставить в мувик частями - помогает очень хорошо.
3) упростить анимацию в мувике - заменить вектора растравой графикой, поставить качество картинк на Low

genius
05.07.2005, 17:58
не совсем понял, причем здесь время проца. ведь getTimer() выдает результаты вне зависимости от того, что происходит на экране. а mp3 файл играет ровно (на слух), значит position тоже увеличивается равномерно. так в чем же дело?

по поводу предложенных вами способов:

1) у меня цельная композиция. я не могу её циклить, она играет 3-5 минут
2) я не вставляю в мувик, я использую Sound.loadSound(). мне кажется, разрезая на части, я нарвусь на ещё больший гемморой синхронизации. как минимум из=за того, что любой mp3-кодер вставляет в начало и конец файла "тишину"
3) совсем не выход. тем более в данный момент никакой анимации нет, просто 5 кружков "прыгают" в такт музыки.