来自服务器的MP3文件未在iOS7中与AVAudioPlayer一起播放

时间:2015-03-31 11:41:25

标签: ios objective-c avaudioplayer

这是我的代码,首先我在调用mp3 url来下载音频数据。然后我将数据保存在本地目录中,之后我从本地文件路径播放音频,但它没有工作AVAudioPlayer抛出错误。我也试过其他方法,但没有人为我工作。 在模拟器上相同的代码工作正常。 音频网址在浏览器中扮演着魅力。

 NSURL *urlll=[NSURL URLWithString:@"www.xyz.audio.mp3"];

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:urlll] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *responce,NSData* data,NSError * error) {
        if (error == nil)
        {
            indicator.hidden=YES;
            [indicator stopAnimating];

            if (data)
            {
               NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
                NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp3", docDirPath , @"Audio"];
                [data writeToFile:filePath atomically:YES];

              NSURL *fileURL = [NSURL fileURLWithPath:filePath];
                AudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];

                AudioPlayer.delegate=self;
                [AudioPlayer prepareToPlay];
                if (AudioPlayer == nil) {
                    NSLog(@"AudioPlayer did not load properly: %@", [error description]);
                } else {
                    [AudioPlayer play];

                }
           }
      }
}];

但是我遇到了这些错误:E rror Domain=NSOSStatusErrorDomain Code=1685348671 "The operation couldn't be completed. (OSStatus error 1685348671.)

请帮帮我:(。

1 个答案:

答案 0 :(得分:1)

在您的代码中,您将音频保存到NSString *filePath,但是您使用fileURL启动。可能是你真的想要这样做:

AudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:filePath] error:&error];

如果没有,那么您应该知道错误是向您报告kAudioFileInvalidFileError。这意味着该文件格式错误。您可以尝试其他格式,例如。caf或。aifcaiff

- 编辑 -

确保AVAudioPlayer是.m或.h文件中的属性,因此在离开方法后内存分配会持续:

@property (nonatomic,strong) AVAudioPlayer *AudioPlayer;

(旁注:属性应以小写 - > audioPlayer开头)