使用setCurrentTimeFunction播放iPhone / iPad声音。非AVAudioPlayer

时间:2010-09-14 16:21:32

标签: iphone ipad avaudioplayer openal

我最近一直试图加入一个密集的声音管理类,声音播放精度是必须的。 我正在寻找的是加载声音,设置播放开始位置(或播放头),播放一段时间,暂停声音,将“播放头”位置设置为新的间隔并再次恢复播放的选项。 (具有动态间隔)。 我已经尝试过使用AVAudioPlayer - 但它似乎太慢了。性能不是您所期望的,在调用pausesetCurrentTime:时会落后。

这是最容易使用的库,也是唯一一个具有setCurrentTime:功能的库。

我来这里寻求你的帮助,推荐一个体面的开源SoundEngine,可以处理低延迟的间隔设置(播放头移动),或参考说明OpenAL或AudioUnit工具可以处理播放位置设置的地方

提前谢谢你,
〜纳塔纳瓦拉。

1 个答案:

答案 0 :(得分:1)

值得花时间查看SDK附带的openAL程序员指南。它有各种各样的好东西! 从那以后:

在源代码下: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类相比。 希望这可以帮助 回复

<强> PK