2014-03-06 171 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; 

OR

//Property 

@property(strong, nonatomic) AVAudioPlayer *avPlayer; 

,那麼你應該能夠播放音頻。

+0

無法確認AVAudioPlayer的授權無法播放。 –

4

我對任何異常都使用通用斷點。由於這個突破點沒有任何細節,球員正在崩潰。剛剛刪除該斷點,現在工作正常。謝謝大家。