【问题标题】:MP3 file from server is not playing with AVAudioPlayer in iOS7来自服务器的 MP3 文件在 iOS7 中无法使用 AVAudioPlayer 播放
【发布时间】:2015-03-31 11:41:24
【问题描述】:

这是我的代码,首先我调用 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];

                }
           }
      }
}];

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

请帮帮我:(。

【问题讨论】:

标签: ios objective-c avaudioplayer


【解决方案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

【讨论】:

  • 我已经尝试了所有格式和getiing,无法完成操作。 (OSStatus 错误 1954115647。)
  • 此问题仅适用于更新设备上的 iOS7 一切正常。
  • 您的 AudioPlayer 属性是如何声明的?
  • 在 .h 中像这样 AVAudioPlayer *AudioPlayer;
  • 我试过这个@property (nonatomic,strong) AVAudioPlayer *AudioPlayer;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多