2010-09-14 2 views
0

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

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

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

Заранее спасибо,
~ Natanavra.

ответ

1

Было бы полезно проверить руководство для программиста openAL, которое поставляется с SDK. У него есть всевозможные лакомства! От:

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

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. Надеюсь, что это помогает Do ответить

Pk

+0

Большое спасибо. Я обязательно попробую это когда-нибудь. Тем временем мне удалось сделать класс AVAudioPlayer несколько более эффективным и снизить задержку, подклассифицируя его и добавляя к нему всевозможные методы. – natanavra

+0

Это здорово. Я рад, что вы смогли уменьшить задержку, поскольку это очень важно, когда речь заходит о воспроизведении звука. Что касается вашего вопроса, где вы попросили ссылку на то, где указано, что инструменты OpenAL или AudioUnit могут обрабатывать настройку позиции воспроизведения; Я предоставил вам это, поэтому попробуйте это, чтобы этот вопрос можно было закрыть. Спасибо. – Pavan

Смежные вопросы