0

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

它是最容易使用的库,也是唯一具有规定setCurrentTime:功能的库。

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

提前谢谢你,
~ Natanavra。

4

1 回答 1

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

于 2010-09-19T10:41:24.190 回答