首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Finch在iphone上播放声音

使用Finch在iphone上播放声音
EN

Stack Overflow用户
提问于 2009-07-15 03:10:10
回答 2查看 1.8K关注 0票数 1

我有一个应用程序,它有两种声音: 1。背景声音,一直循环到下一个视图。2.声音片段可以单独播放,也可以一次播放。

之前我试过使用AVAudioPlayer,但两个片段之间总是有一个很小的静默间隔(我没有找到任何解决方案,如果你有解决方案,请回复),所以我转向了Finch,例如http://github.com/zoul/Finch/tree/master

现在是这样的:我使用AVAudioPlayer播放永远循环的声音,而Finch播放这些背靠背的剪辑。我正在这样做:

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];

    soundEngine = [[Finch alloc] init];
/***
CLIPPED
***/
}
-(void) playclip:(id) sender {
    NSString *fullPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sitar.wav"];
    NSLog(@"Song is %@", fullPath);
    clip = [[Sound alloc] initWithFile:fullPath];
    NSLog(@"Clip Length: %@", clip.length);
    NSLog(@"Clip Playing ? : %d", clip.playing);
    [clip play];
    NSLog(@"Played Clip");
}

这几乎与git存储库中提供的demo项目的代码相同。但出于某种原因,我在控制台上得到了这个:

代码语言:javascript
复制
Song is /Users/shoaibi/Library/Application Support/iPhone Simulator/User/Applications/17FBA26F-6047-4D56-9E45-ADAFE07B7234/Test.app/sitar.wav
Failed to create OpenAL source, error code a004.
Clip Length: (null)
Clip Playing ? : 0
Played Clip

console上打印的目录上的ls表明其中存在具有正确权限的sitar.wav。可能的问题是什么?可能是我停止使用的背景音AVAudioPlayer:

代码语言:javascript
复制
- (void)viewWillAppear:(BOOL)animated {

    //Stop the background music before my ears bleed :P
    d = [[UIApplication sharedApplication] delegate];
    if (d.bg.playing)
    {
        [d.bg stop];
        NSLog(@"Background music stoped");
    }

}

不是在释放声音资源吗?

EN

回答 2

Stack Overflow用户

发布于 2009-07-16 14:08:04

当你初始化一个新的Sound时,最新的Finch会检查OpenAL是否被初始化。如果因为你忘记或初始化OpenAL失败而没有设置当前Finch,你会得到一个更好的错误信息。试一试,可能是你的初始化代码有buggy。

票数 3
EN

Stack Overflow用户

发布于 2011-02-22 02:37:16

当我调用我的viewWillAppear中的声音片段分配时,我得到了同样的错误-它似乎是在awakeFromNib完成它的工作之前被调用的。无论如何,移动分配使它们发生在以后修复它。

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

https://stackoverflow.com/questions/1129199

复制
相关文章

相似问题

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