iOS 5.0 AVAudioPlayer 加载音频剪辑时出错:操作无法完成。 (OSStatus 错误 -50。)
Posted
技术标签:
【中文标题】iOS 5.0 AVAudioPlayer 加载音频剪辑时出错:操作无法完成。 (OSStatus 错误 -50。)【英文标题】:iOS 5.0 AVAudioPlayer Error loading audio clip: The operation couldn’t be completed. (OSStatus error -50.) 【发布时间】:2012-01-26 16:01:51 【问题描述】:所以我尝试在 iPhone 上测试音频播放器,然后我离开了 Troy Brant 的 ios 书籍。我的项目中添加了 Core Audio、Core Foundation、AudioToolbox 和 AVFoundation 框架。我收到的错误消息在主题字段中。在求助于这里之前,我阅读了大约 20 页的 Google 搜索结果! /叹。谢谢,如果你能帮忙。这是我的代码,几乎一字不差地出自他的书中:
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Yonah" ofType:@"caf"];
NSLog(@"%@", soundFilePath);
NSURL *fileURL = [NSURL URLWithString:soundFilePath];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if (!error)
audioPlayer.delegate = self;
//audioPlayer.numberOfLoops = -1;
[audioPlayer play];
else
NSLog(@"Error loading audio clip: %@", [error localizedDescription]);
编辑:神圣的神道教。我弄清楚那是什么。我变了
NSURL *fileURL = [NSURL URLWithString:soundFilePath];
到
NSURL *fileURL = [NSURL fileURLWithPath:soundFilePath];
对于后者,我遇到了一个奇怪的错误,比主题中的错误更奇怪,但我用谷歌搜索了它,我将我的操作系统输入设备从我的网络摄像头更改为我的内置麦克风,你猜怎么着,它在 fileURLWithPath 方法下工作。我将会。该死的。
【问题讨论】:
.caf 应该在 iOS5 中支持,但也许你应该尝试使用 mp3 或其他东西。你记得在项目中导入你的 Jonah.caf 吗?另外:你为什么要设置委托 - 你需要它吗?如果你只是调用 [audioPlayer prepareToPlay]; 你会得到同样的错误吗?而不是 [audioPlayer play];? 【参考方案1】:试试这个 - 将你的 url 转换成 NSdata
NSString* resourcePath = self.audioStr; //your url
NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:resourcePath]];
NSError *error = [[NSError alloc] init];
NSLog(@"url is %@",resourcePath);
audioPlayer = [[AVAudioPlayer alloc] initWithData:_objectData error:&error];
audioPlayer.numberOfLoops = 0;
if (error)
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
else
audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
`
【讨论】:
【参考方案2】:尝试用这样的方式读取音频文件:
audioPlayer_ = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:[NSString stringWithString:soundFilePath_]]
error:&error];
【讨论】:
以上是关于iOS 5.0 AVAudioPlayer 加载音频剪辑时出错:操作无法完成。 (OSStatus 错误 -50。)的主要内容,如果未能解决你的问题,请参考以下文章