iOS 5.0 AVAudioPlayer加载音频片段时出错:无法完成操作。 (OSStatus错误-50。)

时间:2012-01-26 16:01:51

标签: iphone ios ios5 avaudioplayer

所以我试图在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];

到后者,我得到一个奇怪的错误,比主题中的那个更奇怪但是我用Google搜索并且我将我的操作系统输入设备从我的网络摄像头更改为我的内置麦克风并猜测它是什么,它在fileURLWithPath方法下工作。我将会。该死。

2 个答案:

答案 0 :(得分:2)

试试这个 - 将您的网址转换为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];
}`

答案 1 :(得分:0)

尝试使用以下内容读取音频文件:

audioPlayer_ = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:[NSString stringWithString:soundFilePath_]] 
error:&error];