这是我的代码,首先我在调用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.)
请帮帮我:(。
答案 0 :(得分:1)
在您的代码中,您将音频保存到NSString *filePath
,但是您使用fileURL
启动。可能是你真的想要这样做:
AudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:filePath] error:&error];
如果没有,那么您应该知道错误是向您报告kAudioFileInvalidFileError
。这意味着该文件格式错误。您可以尝试其他格式,例如。caf
或。aifc
或aiff
。
- 编辑 -
确保AVAudioPlayer
是.m或.h文件中的属性,因此在离开方法后内存分配会持续:
@property (nonatomic,strong) AVAudioPlayer *AudioPlayer;
(旁注:属性应以小写 - > audioPlayer
开头)