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。)的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioPlayer 在 5.0 中工作正常,在 4.0-4.3.5 中出现问题

AVAudioPlayer 阻塞和 iOS 5 问题

ios 如何播放在线的音频文件

快速的音量变化会导致 AVAudioPlayer 中的伪影

ios删除avaudioplayer循环延迟

什么是 AVAudioPlayer 的 Mac 等价物?