objective-c – 音频播放的准确(音乐级)时间

objective-c – 音频播放的准确(音乐级)时间,第1张

概述我正在尝试编写一个应用程序,可以安排一些(大多数是微小的)音频文件的定时播放.问题:它需要定时准确的音乐.声音不会经常播放(例如,它不是采样器或鼓组),但它们需要绝对精确地放置.这个问题分为两部分: >我该如何组织时间安排?我听说NSTimer不准确,或者至少不可靠?我应该以某种方式使用MIDI吗?还是一个紧凑的循环和一些具有高分辨率的时间获取功能? >一旦我确定了时间安排,我知道何时播放我的声音 我正在尝试编写一个应用程序,可以安排一些(大多数是微小的)音频文件的定时播放.问题:它需要定时准确的音乐.声音不会经常播放(例如,它不是采样器或鼓组),但它们需要绝对精确地放置.这个问题分为两部分:

>我该如何组织时间安排?我听说NSTimer不准确,或者至少不可靠?我应该以某种方式使用MIDI吗?还是一个紧凑的循环和一些具有高分辨率的时间获取功能?
>一旦我确定了时间安排,我知道何时播放我的声音……我应该怎么玩它们? NSSound是否快速可靠,足以保持所需的准确度?

解决方法 NSTimer对于大多数用途来说都是准确的,只要你没有对定时器安排的任何线程进行过多调整就足以使定时器延迟.您需要及时返回运行循环以进行下一个触发日期.幸运的是,NSSound是异步播放的,所以这应该不是问题.

通常会导致NSTimers出现问题的原因是人们将间隔设置得非常低(我看到的一个问题是1厘秒).如果你所做的事情花费的时间超过了那段时间(并且花费的时间超过1厘秒真的很​​容易),那么你应该在计时器启动后返回运行循环,这将使计时器延迟,这将搞砸你的时间.

你只需要尽可能快地实现你的计时器方法,如果你不能让它足够快,那就做一个NSOperation子类来完成这项工作,让你的计时器方法只是实例化 *** 作,设置它,然后添加它到一个 *** 作队列. (该 *** 作将在另一个线程上运行,因此它不会占用您计划定时器运行循环的线程.)如果定时器可能非常频繁,那么这是微优化的一种情况(由仪器和鲨鱼,当然)可能是有保证的.

总结

以上是内存溢出为你收集整理的objective-c – 音频播放的准确(音乐级)时间全部内容,希望文章能够帮你解决objective-c – 音频播放的准确(音乐级)时间所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1008364.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存