AVAudioPlayer - >不工作

时间:2011-03-17 05:57:17

标签: iphone bug-tracking avaudioplayer

音频播放器工作正常,如果我启动它20至30次,但之后它显示以下错误

错误域= 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);
    }


}

4 个答案:

答案 0 :(得分: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];

它似乎解决了我的问题,希望它能成为你的。

答案 1 :(得分:0)

通过多次调用该方法,您多次分配AVAudioPlayer newPlayer的实例。由于分配了内存,这肯定会导致问题。完成使用后,请确保release您拥有的对象。

答案 2 :(得分:0)

您是否设置了AudioSessionCategory?

{NSError *setCategoryError = nil; 

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

答案 3 :(得分:0)

当我收到此错误代码时,我试图通过从iPod库中选择文件来播放我的应用程序中的文件。我发现在我设备上的iPod库中,我有同一首歌的重复条目。 iOS附带的音乐播放器能够播放一个而不是另一个。这意味着一个条目无论如何都无效。可能已从设备中删除,但iTunes / iOS没有正确管理。

似乎对不可播放条目的引用存在于"最近添加"播放列表由系统自动创建。我从"最近添加"中选择了相同的文件。播放列表可在应用中播放。

备注:我已从手动创建的播放列表中删除了该文件(已从iOS设备中删除)。

简而言之,我加载到AVAudioPlayer实例的文件似乎不再可用于设备,或者它的引用URL没有返回正确的文件。这种错误的常见原因是当播放器没有根据给定的URL加载文件时。