首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone/iPad用setCurrentTimeFunction播放声音。非AVAudioPlayer

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

Stack Overflow用户
提问于 2010-09-14 16:21:32
回答 1查看 754关注 0票数 0

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

它是最容易使用的库,也是唯一具有指定setCurrentTime:函数的库。

我来这里寻求您的帮助,这是一个不错的开源SoundEngine的建议,它可以处理间隔设置(游戏头移动)和低延迟,或者参考说明OpenAL或AudioUnit工具可以处理回放位置设置的位置。

提前谢谢你,

~ Natanavra.

EN

回答 1

Stack Overflow用户

发布于 2010-09-19 10:41:24

值得花时间查看一下SDK附带的openAL程序员指南。它有各种各样的好东西!从这一点来看:

源下: alGenSources生成的每个源都具有可以设置或检索的属性。alSourcef、3f、fv、i和alGetSourcef、3f、fv、i族函数可以用来设置或检索以下源属性:

代码语言:javascript
复制
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得到你的正常时间。

代码语言:javascript
复制
float pos = 0; alGetSourcef( sourceID, AL_SEC_OFFSET, &pos );
float normalizedPos = pos / 60.0f;

OpenAL绝对有播放声音,暂停任何你喜欢的功能。记住,OpenAL经常用于游戏中,因为它提供低延迟和按需播放的声音播放。你对声音有很大的控制权。与AVAudioPlayer类相比。希望这能帮你回复

Pk

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3710824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档