2011-03-17 65 views
0

音頻播放器工作正常,如果我開始它20到30倍,但之後它顯示了以下錯誤AVAudioPlayer - >不工作

錯誤域= NSOSStatusErrorDomain代碼= -43「的操作無法完成。 (OSStatus錯誤-43)」

的代碼目前我使用的是如下

- (void)playShortSound:(NSString *)fileName type:(NSString *)type 
{ 
    if (!isSound) { 
     return; 
    } 
    NSString *soundFilePath =[[NSBundle mainBundle] pathForResource: fileName ofType: type]; 
    NSURL *fileURL = [[[NSURL alloc] initFileURLWithPath: soundFilePath] autorelease]; 


    NSError *error; 
    AVAudioPlayer *newPlayer =[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL 
              error: &error]; 


    //newPlayer.numberOfLoops = 0; 
    newPlayer.volume=1.0; 
    if (newPlayer == nil){ 
     NSLog(@"%@",[error description]); 
     //[self playShortSound:fileName type:type]; 
     //return; 
    } 
    else{ 
     [newPlayer play]; 
    newPlayer.delegate=self; 
    } 
} 
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) player 

         successfully: (BOOL) completed { 

    if (completed == YES) { 

     NSLog(@"Sound Playing complete"); 

    }else { 
     NSLog(@"error in completion of %@",player.url); 
    } 


} 

回答

0

通過調用你的分配AVAudioPlayernewPlayer多次實例的方法很多次。由於內存分配,這肯定會導致你的問題。只要確保你release您使用它們後所擁有的對象。

+0

是的,這可能是一個可能的原因,但如果我嘗試釋放newPlayer;它不會播放聲音.... – Zahur 2011-03-19 04:51:43

1

我有同樣的問題,而不是初始化從url的球員我從NSData它。

NSString *soundFilePath =[[NSBundle mainBundle] pathForResource: fileName ofType: type]; 
NSData *soundData = [[NSData alloc] initWithContentsOfFile:soundFilePath]; 


NSError *error; 
AVAudioPlayer *newPlayer =[[AVAudioPlayer alloc] initWithData: soundData 
             error: &error]; 

它似乎解決了我的問題希望它是你的。

0

您是否設置了AudioSessionCategory?

{NSError *setCategoryError = nil; 

BOOL success = [[AVAudioSession sharedInstance] setCategory: avaudiosessioncategoryplayandrecorderror: &setCategoryError]; 
} 
0

我試着從iPod庫中選取他們當我得到這個錯誤代碼在我的應用程序播放文件。我發現在設備上的iPod庫中,我有同一首歌的重複條目。 iOS附帶的音樂播放器可以播放一首而不是另一首。這意味着一個條目無論如何都是無效的。可能從設備上刪除,但iTunes/iOS沒有做適當的家務管理。

似乎對不可播放條目的引用存在於系統自動創建的「最近添加」播放列表中。我從「最近添加」播放列表中選擇了相同的文件,以在應用中播放。

邊注意:我已經從手動創建的播放列表中刪除了該文件(從iOS設備本身刪除)。

簡而言之,我加載到AVAudioPlayer實例中的文件在設備上不再可用,或者它的引用URL沒有返回正確的文件來播放。所以這個錯誤的常見原因是當播放器沒有根據給定的URL來加載文件時。