我最近一直在尝试加入一个强化的声音管理课程,其中声音播放精度是必须的。我正在寻找的是选择加载一个声音,设置播放开始位置(或播放头),播放一段时间,暂停声音,将‘播放头’的位置设置为一个新的间隔,并再次恢复播放。(具有动态间隔)。我尝试过使用AVAudioPlayer来解决这个问题,但它似乎太慢了。性能不是您所期望的,而是在调用pause和setCurrentTime:时滞后的。
它是最容易使用的库,也是唯一具有指定setCurrentTime:函数的库。
我来这里寻求您的帮助,这是一个不错的开源SoundEngine的建议,它可以处理间隔设置(游戏头移动)和低延迟,或者参考说明OpenAL或AudioUnit工具可以处理回放位置设置的位置。
提前谢谢你,
~ Natanavra.
发布于 2010-09-19 10:41:24
值得花时间查看一下SDK附带的openAL程序员指南。它有各种各样的好东西!从这一点来看:
源下: alGenSources生成的每个源都具有可以设置或检索的属性。alSourcef、3f、fv、i和alGetSourcef、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类相比。希望这能帮你回复
Pk
https://stackoverflow.com/questions/3710824
复制相似问题