2012-01-05 10 views
4

現在、リモートサーバーから.mp3ファイルをダウンロードしています。ファイルがロードされたら、そのファイルをキャッシュディレクトリに保存します。その後、私はAVAudioPlayerのインスタンスを作成し、そこにデータをロード:AVAudioPlayerブロッキングとiOS 5の問題

- (void)playAudio:(NSString *)path 
{ 
    NSLog(@"start playing audio at path %@", path); 
    NSError *error = nil; 
    NSData *audioData = [NSData dataWithContentsOfFile:path]; 
    _audioPlayer = [[AVAudioPlayer alloc] initWithData:audioData error:&error]; 
    if (error == nil) 
    { 
     [_audioPlayer play];  
    } 
} 

このファイルの再生を開始する時間の間に、いくつかのアニメーションも起こっています。 AVAudioPlayerの再生を許可すると、UIがブロックされているように見えます。アニメーションは、曲が2〜2回再生されるまで固定されます。これはシミュレータのFYIです。私はそれがあなたが再生を開始するときにAVAudioが吐き出す(可能な)バグ/ログと関係があるかどうか疑問に思っていますか? UI /アニメーションに影響を与えずにオーディオファイルを再生する方法はありますか?

[_audioPlayer play]をコメントアウトすると、アニメーションが正常に実行されるため、問題はinitWithData:の呼び出しのように見えません。ここで

は、iOS 5は、同様の問題が記録されます。あなたの "読み込みエラー" ライン)

1:

2012-01-05 14:32:27.427 Lovebind[53526:207] Error loading /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn: dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.433 Lovebind[53526:207] Error loading /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn: dlopen(/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.556 Lovebind[53526:207] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.562 Lovebind[53526:207] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.572 Lovebind[53526:207] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.578 Lovebind[53526:207] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.589 Lovebind[53526:207] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 
2012-01-05 14:32:27.595 Lovebind[53526:207] Error loading /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn: dlopen(/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn, 262): Symbol not found: _CFXMLNodeGetInfoPtr 
    Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 
in /System/Library/Frameworks/Security.framework/Versions/A/Security 

答えて

9

実は、私は公式の答えに(今削除された)私のコメントを有効にしますあなたのプロジェクトにCoreFoundation.frameworkを追加すると消えるはずです。

2)別のスレッドでサウンドを再生し、私はあなたのブロッキングの問題が離れて行くだろうと思います。

これを実現するための最も簡単な方法は、実行することです。

- (void)playingAudioOnSeparateThread: (NSString *) path 
{ 
    if(_audioPlayer) 
    { 
     [_audioPlayer release]; 
     _audioPlayer = nil; // doing this while a sound is playing might crash... 
    } 

    NSLog(@"start playing audio at path %@", path); 
    NSError *error = nil; 
    NSData *audioData = [NSData dataWithContentsOfFile:path]; 
    _audioPlayer = [[AVAudioPlayer alloc] initWithData:audioData error:&error]; 
    if (error == nil) 
    { 
     [_audioPlayer play];  
    } 
} 

- (void)playAudio:(NSString *)path 
{ 
    [NSThread detachNewThreadSelector: @selector(playingAudioOnSeparateThread:) toTarget: self withObject: path]; 
} 

私はない持って正気か、エラーチェックのためにこのコードをチェックします。それがあなたの仕事です。 :-)

+0

別のスレッドでサウンドを再生するにはどうすればよいですか?そのための簡単な方法はありますか、または手動で新しいスレッドなどを作成する必要がありますか?ありがとう、マイケル、私もCoreFoundationを追加しようとし、それが役立つかどうかを見てみましょう。 – typeoneerror

+0

エラーを解決するためにCoreFoundationを追加する際のダイスはありません。 – typeoneerror

+0

私はあなたにコードスニペットを与えるために私の答えを編集しました。私はあなたのプロジェクトに既にどのフレームワークが含まれているのかわからないので、いくつかの追加のオーディオフレームワークを追加して、グーフィー欠けているシンボルエラーを解決するかどうかを試してみてください。 –

関連する問題