Когда SoundChannel фактически начинает воспроизводить звук? - PullRequest
0 голосов
/ 26 сентября 2010

Я хочу очень точно контролировать начало звука, но, кажется, что-то ждет, прежде чем начать звук.Это похоже на то, что в плеере есть внутренние часы, которые работают со скоростью примерно 43 кадра в секунду, и что звук может начинаться только в такт этих часов.
Неважно, какая частота кадров проекта или на каком компьютере он запускается, онвсегда 43 к / с (по крайней мере, для меня).

Чтобы проверить это, запустите звук, затем каждый кадр сравнивает channel.position с ожидаемой позицией, например, getTimer () - startTime.Разница всегда (для меня) 23 или 46 мс.

Я нашел вопрос здесь , который говорит о свойстве позиции и о том, что оно обновляется по своему собственному курсу, который в моемСлучай составляет 43 кадра в секунду, примерно каждые 23 мсек.

Есть ли способ получить контроль над началом воспроизведения звука и узнать, когда обновляется свойство position?И если бы кто-то мог объяснить, что на самом деле делает Flash и когда, это было бы здорово!

Я был бы очень признателен за все вводные данные, это так странно.

Редактировать: я заметил, что свойство positionсодержит только кратные значения 23.219954648526077, например, 46.439909297052154, 69.65986394557822?Если вы спросите непосредственно после создания канала, он содержит номер, который я только что установил, но в следующем кадре это только эти конкретные номера.Есть идеи у кого-нибудь?

1 Ответ

1 голос
/ 27 сентября 2010

Интервал 23,219954648526077 мс поступает из внутренней флэш-памяти, используя 1024 выборки в качестве размера буфера и частоту выборки 44100 Гц.

23.219954648526077 мс = (1024 выборок / 44100 выборок в секунду) * (1000 мс в секунду)

Если вам нужна точность сэмплирования, вы можете попробовать использовать SampleDataEvent для непосредственного вывода сэмплов и Sound.extract для доступа к загруженным сэмплам. Это поможет, если вы хотите синхронизировать несколько звуков друг с другом, но не синхронизируете звук с кадрами дисплея или видео.

...