我正在播放几种声音,它们必须按顺序播放(随机),这样当一个声音结束时,下一个声音需要开始。
我正在使用AudioServicesAddSystemSoundCompletion回调过程来确定SystemSoundID指定的声音文件何时播放完毕。此时静态C回调方法被命中,然后回调实例以播放另一个声音。
但是,我在音频整理和回调功能被击中之间会有1秒的延迟。
音频被剪裁,最后没有额外的空间。我已经把NSLog放在几个关键位置来确认并播放第一个声音 - 剩下的代码什么也没做 - 只是等待'输入'然后在音频结束后的一秒钟内回调一下。< / p>
我查看了官方文档,我找不到任何理由 - 没有10分钟的谷歌搜索提供任何解决方案。
有人有任何想法吗?
由于
答案 0 :(得分:0)
我不知道延迟,我从未经历过这种情况。但也许你可以试试this。它是SystemSoundID的一个Objective-c包装器及其一些相关的函数,包括完成回调。使用它代替C函数应该更容易。
答案 1 :(得分:0)
对于那些阅读此内容的人表示不好意思,但由于时间限制,我使用Apple的支持请求来解决这个问题,你不会相信答案......
没有延迟。 (勺子/不论;))
问题是由我们用来裁剪和修剪音频文件的应用程序的UI'功能'引起的...... GarageBand。
看来,如果你修剪GarageBand中的音轨,直到只有你想要的声音可见并播放 - 即使是循环播放 - 然后将该曲目导出为.aif文件...它没有显示或警告你 - 轨道的所有修剪和切割部分BACK !!!
因此,即使您在GB天后重新打开音轨,您所看到和听到的都是剪裁的剪裁版本。然而,修剪只是文件上的元数据 - 就像iTunes修剪一样......完全没有意义。
因此,所有音频都必须在更准确的音频应用中重新编辑和导出 - 大胆......
Apple确实提到这些声音播放的回调线程是一个低优先级的线程,但我们仍然不应该看到这样的停顿。
感谢那些试图想出一个理由的人,特别是上面的海报,他们花时间去尝试和帮助。