Воспроизведение звука с iPhone / iPad с помощью функции setCurrentTimeFunction. Не AVAudioPlayer - PullRequest
0 голосов
/ 14 сентября 2010

Я недавно пытался включить интенсивный класс управления звуком, где точность воспроизведения звука является обязательной.То, что я ищу, - это возможность загрузить звук, установить начальную позицию воспроизведения (или точку воспроизведения), воспроизвести на определенное время, приостановить звук, установить позицию «точка воспроизведения» на новый интервал и возобновить воспроизведение снова.(с динамическими интервалами).Я пытался использовать AVAudioPlayer в этом отношении - но кажется, что это слишком медленно.Производительность просто не та, которую вы ожидаете, она запаздывает при вызове pause и setCurrentTime:.

Это самая простая в использовании библиотека и единственная с указанной функцией setCurrentTime:.

Я прихожу сюда с просьбой о вашей помощи, рекомендации по созданию достойного SoundEngine с открытым исходным кодом, который может обрабатывать настройки интервала (перемещение точки воспроизведения) с низкой задержкой, или ссылки на то, где указано, что инструменты OpenAL или AudioUnit могут обрабатывать настройку позиции воспроизведения.

Заранее спасибо,
~ Натанавра.

1 Ответ

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

Стоит потратить время на ознакомление с руководством по программированию openAL, которое входит в комплект SDK. У него есть всякие вкусности! Из этого:

Под источником: каждый источник, созданный alGenSources, имеет свойства, которые можно установить или получить. Семейства функций alSource [f, 3f, fv, i] и alGetSource [f, 3f, fv, i] можно использовать для установки или получения следующих свойств источника: ...

AL_SEC_OFFSET f, fv, i, iv the playback position, expressed in seconds
AL_SAMPLE_OFFSET f, fv, i, iv the playback position, expressed in samples
AL_BYTE_OFFSET f, fv, i, iv the playback position, expressed in bytes

Таким образом, вы можете получить позицию воспроизведения в секундах и поделить на 60, чтобы получить нормализованное время.

float pos = 0; alGetSourcef( sourceID, AL_SEC_OFFSET, &pos );
float normalizedPos = pos / 60.0f;

OpenAL определенно имеет возможности для воспроизведения паузы звука, как вам нравится. помните, что OpenAL часто используется в играх, поскольку обеспечивает воспроизведение звука с низкой задержкой и воспроизведением по требованию. У вас есть большой контроль над звуком. по сравнению с классом AVAudioPlayer. Надеюсь это поможет Ответить

Рк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...