2014-03-06 4 views
1

오디오에서 처음으로 작업. 무언가를 놓치 실 수도 있습니다.재생시 AVAudioPlayer가 충돌 함

AVFoundation 프레임 워크를 추가했습니다. #import

을 추가하고 이것을 viewDidLoad에 추가했습니다.

NSString* docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
NSString* audioPath = [docPath stringByAppendingPathComponent:@"001.mp3"]; 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:audioPath]; 

if (!fileExists) { 
    NSLog(@"Audio File not exist!"); 
}else{ 

    NSError *error; 
    NSURL *url = [[NSURL alloc] initFileURLWithPath:audioPath]; 
    NSData *audioData = [NSData dataWithContentsOfURL:url]; 

    self.audioPlayer = [AVAudioPlayer alloc]; 

    // It crashes at this line 
    self.audioPlayer = [self.audioPlayer initWithData:audioData error:&error]; 

    NSLog(@"%@",self.audioPlayer); 



} 
+0

어떤 메시지가 표시되면 다운 되나요? – zoul

+0

출력에만이 출력 (lldb) – Mani

답변

0

이 항목은 나에게 유용합니다. 또한 오디오 파일이 재생되는지 여부를 확인하십시오.

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/001.caf", [[NSBundle mainBundle] resourcePath]]]; 

    NSError *error; 
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    audioPlayer.numberOfLoops = -1; 

    if (audioPlayer == nil) 
     NSLog([error description]);    
    else 
     [audioPlayer play]; 
+0

나는 당신의 솔루션을 시도했지만 여전히 재생하려고 시도한 라인에 도달하면 충돌합니다. – Mani

+0

네, 코드 아이디어가있는 다른 파일에서 작업하고 있습니다. – Mani

+0

예 샘플 프로젝트에서 동일한 파일을 확인합니다. – Mani

0

AVAudioPlayer 인스턴스에 대해 강력한 속성을 만들어야합니다. 세계화 또는 강력한 자산으로 만들 수 있습니다.

//Global iVAR 

AVAudioPlayer *avPlayer; 

또는

//Property 

@property(strong, nonatomic) AVAudioPlayer *avPlayer; 

는 당신은 오디오를 재생할 수 있어야합니다.

+0

AVAudioPlayer의 위임을 확인하지 않고도 재생할 수 없습니다. ??? –

4

모든 예외에 대해 일반 중단 점을 사용하고있었습니다. 플레이어는 세부 정보가없는이 중단 점 때문에 충돌을 일으켰습니다. 그냥 그 중단 점을 제거하고 지금은 잘 일했습니다. 모두들 감사합니다.