首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带音频的计时器精度

带音频的计时器精度
EN

Stack Overflow用户
提问于 2011-07-15 07:21:21
回答 1查看 626关注 0票数 2

我正试图发出一个非常精确的定时发射的声音。

我使用以下代码来创建计时器:

代码语言:javascript
复制
    timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));       
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1ull*500000000, 5000ull);
    dispatch_source_set_event_handler(timer, ^{[myAVAudioPlayer play];});
    dispatch_resume(timer);

myAVAudioPlayer的初始化方式如下:

代码语言:javascript
复制
    NSURL *soundURL = [NSURL fileURLWithPath:[mainBundle pathForResource:@"clock" ofType:@"aiff"]];
    myAVAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
    [myAVAudioPlayer prepareToPlay];

我还尝试使用.caf格式的声音和苹果的BubbleLevel示例代码中的SoundEffect类,在性能上没有显着差异。

如果发射率很低,声音是相当准确的。但如果我加快射速,声音就会非常不准确。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-15 07:58:24

调度定时器不是为音频精度而设计的。IIRC是苹果建议人们直接使用线程而不是分派队列的为数不多的几个领域之一。

比这更好的是研究Core Audio,它的设计目的是处理您想要的东西:对时间的精确控制。在这里我不能提供太多的细节,因为我不熟悉它的应用程序接口,而且它的文档也很糟糕,尽管谷歌很快找到了at least one person doing the same thing,所以你可能会幸运地找到一个更好的解决方案。

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

https://stackoverflow.com/questions/6701121

复制
相关文章

相似问题

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