2012-01-05 5 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가 차단 된 것처럼 보이며 노래가 두 번째 또는 두 번째 재생 될 때까지 애니메이션이 고정됩니다. 이것은 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

코드 스 니펫을 제공하기 위해 내 대답을 편집했습니다. 프로젝트에 이미 어떤 프레임 워크가 포함되어 있는지 확신 할 수 없으므로 몇 가지 추가 오디오 프레임 워크를 추가하여 구피가없는 심볼 오류를 해결하는지 확인하십시오. –