AVAudioPlayer 初始化:错误代码 -50

Posted

技术标签:

【中文标题】AVAudioPlayer 初始化:错误代码 -50【英文标题】:AVAudioPlayer initialization: error code -50 【发布时间】:2010-12-24 03:15:52 【问题描述】:

我最近遇到了一个在 Internet 上找不到讨论的问题 - 我正在初始化 AVAudioPlayer 以播放音频文件,并收到以下错误:

Error Domain=NSOSStatusErrorDomain Code=-50 "Operation could not be completed. (OSStatus error -50.)

事实证明,我在创建 NSURL 以发送到音频播放器 init 方法时犯了一个错误,导致 NSURL 对象为空。愚蠢的错误,调试时很容易找到,但我想我会在这里列出以防万一其他人做同样的事情。

【问题讨论】:

对于其他想知道为什么他们的 NSURL 对象为空的人,如果您正在创建这样的 NSURL 并且您的文件名中有空格,则需要百分比编码:NSString *path = [[NSBundle mainBundle] pathForResource:@"file with spaces.mp3" ofType:@""]; NSString *path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:path]; 很棒的评论指出了文件名中的空格问题!非常感谢! 此错误的一个可能来源是尝试将 AVAudiosessionCategoryOptions.defaultToSpeaker 选项与 AVAudioSessionCategoryPlayback 一起使用。这不起作用,您需要使用 AVAudioSessionCategoryPlayAndRecord - 或删除 defaultToSpeaker 选项。 【参考方案1】:

我正在添加我的问题版本和解决方案,因为我遇到了打印语句的错误。我认为这与字符串插值或试图强制打印 nsattributedstrings 有关。我尝试执行以下操作。

print("THE ARRAY COUNT IS : \(unwrappedResults.count)\n\n\n 
THE FULL ARRAY IS THE FIRST WHOLE RESULT IS: \(unwrappedResults)\n\n\n \ (unwrappedResults[0])\n

THE ATTRIBUTED FULL TEXT IS: \(unwrappedResults[0].attributedFullText)\n\n\n 
THE ATTRIBUTED PRIMARY TEXT IS: \(unwrappedResults[0].attributedPrimaryText)\n\n\n 
THE ATTRIBUTED SECONDARY TEXT IS: \(unwrappedResults[0].attributedSecondaryText)\n\n\n")

关于此的某些内容不正确,不会发生打印。我会在控制台中收到以下错误消息。

boringssl_metrics_log_metric_block_invoke(131) 无法记录指标 & 无聊sl_metrics_log_metric_block_invoke(133)错误域=NSOSStatusErrorDomain代码=-50“不支持的xpc类型” UserInfo=NSDescription=不支持的 xpc 类型

我通过更改展开/变量值的方式解决了这个问题。从根本上说,我认为我试图使用无法打印的字符串插值来打印一些东西,这就是导致此错误的原因。

【讨论】:

【参考方案2】:

关于 Brynjar 的评论: Apple NSURL 类参考描述 URLWithString 状态

要为文件系统路径创建 NSURL 对象,请使用 fileURLWithPath:isDirectory: 代替。

我发现将URLWithString 用于文件系统路径会生成 pix0r 报告的错误,因此可能是错误代码 = -50 的另一种解释

【讨论】:

【参考方案3】:

“OSStatus error -50”表示paramErr,一种旧式Mac错误代码,表示参数错误。

【讨论】:

【参考方案4】:

确保您的NSURL 有效,否则您将收到错误代码-50“无法完成操作”。

【讨论】:

如何确保我的 NSURL 有效?路径是正确的并且可以在 iPad 上运行,但是当我在模拟器中运行它时找不到文件... :(

以上是关于AVAudioPlayer 初始化:错误代码 -50的主要内容,如果未能解决你的问题,请参考以下文章

iOS AVAudioPlayer OSStatus 错误 -43

AVAudioPlayer 15 次不播放音频

AVAudioPlayer 错误域=NSOSStatusErrorDomain 代码=-43

AVAudioPlayer 不工作。 swift2 中的错误域 = NSOSStatusErrorDomain 代码 = 1954115647 “(空)”

AVAudioPlayer 突然不再播放整个音频源

使用 AVAudioPlayer 在后台播放声音序列