我最近一直试图加入一个密集的声音管理类,声音播放精度是必须的。
我正在寻找的是加载声音,设置播放开始位置(或播放头),播放一段时间,暂停声音,将“播放头”位置设置为新的间隔并再次恢复播放的选项。 (具有动态间隔)。
我已经尝试过使用AVAudioPlayer - 但它似乎太慢了。性能不是您所期望的,在调用pause
和setCurrentTime:
时会落后。
这是最容易使用的库,也是唯一一个具有setCurrentTime:
功能的库。
我来这里寻求你的帮助,推荐一个体面的开源SoundEngine,可以处理低延迟的间隔设置(播放头移动),或参考说明OpenAL或AudioUnit工具可以处理播放位置设置的地方
提前谢谢你,
〜纳塔纳瓦拉。
答案 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 强>