1

2 種類のサウンドを持つアプリケーションがあります。 1. バックグラウンド サウンド。次のビューまで永遠にループします。2. 個別に、またはすべて一度に再生できるサウンド クリップ。

以前は AVAudioPlayer を使用してみましたが、2 つのクリップの間に常に非常に短い無音間隔がありました (解決策が見つかりませんでした。解決策がある場合は返信してください) 。 com/zoul/フィンチ/ツリー/マスター

ここで取り引きがあります。私は AVAudioPlayer を使用して永遠にループするサウンドを再生し、Finch を使用してそれらの連続したクリップを再生しています。私はこれをやっています:

- (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 リポジトリで提供されているデモ プロジェクトとほぼ同じコードです。しかし、何らかの理由で、コンソールでこれを取得します:

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

コンソールに出力されたディレクトリの ls は、そこに適切な権限を持つ sitar.wav があることを明らかにします。問題は何ですか?私が使用をやめた背景音 AVAudioPlayer かもしれません:

- (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");
    }

}

サウンドリソースを解放していませんか?

4

2 に答える 2

3

最新のFinchは、新しいを初期化するときにOpenALが初期化されているかどうかをチェックするようになりましたSound。Finchの初期化を忘れたか失敗したために、現在のOpenALコンテキストが設定されていない場合は、より適切なエラーメッセージが表示されます。試してみてください。初期化コードにバグがある可能性があります。

于 2009-07-16T14:08:03.783 に答える
0

viewWillAppear でサウンド クリップの allocs を呼び出したときに同じエラーが発生しました。awakeFromNib が作業を完了する前に呼び出されたようです。とにかく、後で起こったように割り当てをシフトすると、それが修正されました。

于 2011-02-21T18:37:15.503 に答える