使用 iOS 模拟器的 AVAudioPlayer 错误

Posted

技术标签:

【中文标题】使用 iOS 模拟器的 AVAudioPlayer 错误【英文标题】:AVAudioPlayer Error using iOS Simulator 【发布时间】:2013-06-26 11:23:51 【问题描述】:

以下问题:

<0xb03e7000> Error '!obj' trying to fetch default input device's sample rate
<0xb03e7000> Error getting audio input device sample rate: '!obj'
<0xb03e7000> AQMEIOManager::FindIOUnit: error '!dev'

我已经在 *** 上发现了这个问题,但没有一个 提供的解决方案对我有用。

代码:

#import "CJTActionViewController.h"

@interface CJTActionViewController()

@property NSURL *url;
@property NSData *songFile;
@property AVAudioPlayer *audioPlayer;

@end

@implementation CJTActionViewController

- (void)viewDidLoad

    [super viewDidLoad];

    self.url = [NSURL fileURLWithPath: [NSString stringWithFormat:@"%@/cannon_01.wav", [[NSBundle mainBundle] resourcePath]]];
    self.songFile = [[NSData alloc] initWithContentsOfURL:self.url];
    self.audioPlayer = [[AVAudioPlayer alloc] initWithData:self.songFile error:nil];
    self.audioPlayer.delegate = self;
    self.audioPlayer.numberOfLoops = 0;


- (IBAction)firePressed(id):sender

    [self.audioPlayer play];


@end

委托已设置。不知道它是否重要,但在另一台 Mac 上 代码运行没有问题。

我使用 ios 6.1 和模拟器 6.1

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,并且能够通过调整我正在运行模拟器的 Mac 上的声音设置来解决它,每个 the answer to this question。我使用的是外部声卡,并通过以下方式更改我的 Mac 上的音频设置:

输入:内置麦克风 输出:内部扬声器

希望这会有所帮助。我的代码和你的很相似,我认为这根本不是你的代码的问题。

【讨论】:

谢谢!麦克风输入为空,osx 未检测到任何输入源。我在麦克风输入中插入了插孔,错误消失了。 可以确认,将耳机插入我的输入端口解决了这个问题,太奇怪了! 我有一个 iSight 摄像头连接到我的 mac mini,然后发生了这个错误。拔下 iSight,这个错误就消失了。感谢您提供检查音频的提示。【参考方案2】:

确认连接音频输入设备(并重新启动计算机)可以解决问题。从 Macbook Air 切换到 Mac Pro Cylinder 后,我收到了这个错误。

我连接了我的 Bose AE 蓝牙耳机,终于从 Xcode 收到了一条有意义的消息,但它仍然中止:

16:04:10.781 WARNING:   246: Default audio device changed. Restart the simulator to have it use the newly-selected device.
2015-04-21 16:04:19.790 FatBirdsPetAdventure[1622:84473] 16:04:19.790 ERROR:     56: Start: Mach message timeout. Apparently deadlocked. Aborting now.

在重新启动模拟器并进行 XCode 舞蹈(从模拟器中删除应用程序、清理项目、重建)后,我收到了另一条消息:

16:06:13.847 ERROR:     56: Initialize: Mach message timeout. Apparently deadlocked. Aborting now.

最后重启机器后,就再也没有错误了。

【讨论】:

【参考方案3】:

我花了几个小时试图弄清楚这一点,如果您没有麦克风或输入设备,那么 xcode 将无法正确初始化 AVAudioPlayer。

这就是为什么插入某种类型的输入设备可以工作,AVAudioPlayer 正在搜索输入设备。您可以在 iPhone 上运行相同的应用程序,它会运行良好。

所以在模拟器上运行时只需插入某种类型的输入设备,我还没有找到解决这个问题的方法。而且可能也不推荐。

【讨论】:

【参考方案4】:

我的解决方案是: - 将系统偏好设置、音频输入设置为内部麦克风以外的其他内容 - 在模拟器中,将输入设置为内部麦克风 如果它们都相同,它会以某种方式“锁定”麦克风。

致所有人:感谢您的回答。我真的认为这是我的编程不好,但实际上,这是由于 Apple 的糟糕设计。 这个话题在 6 年前就提出了,Apple 至今仍未摆脱这个 bug!

【讨论】:

您能否提供该错误的链接?【参考方案5】:

我也遇到了同样的问题,但是耳机插孔上连接了扬声器。移除了插孔,调整了系统偏好设置将音频输出回内置扬声器,然后退出 Xcode 和模拟器并重新启动为我修复了它。

【讨论】:

【参考方案6】:

尝试插入带有麦克风的耳机,希望问题能得到解决。同时重启 xcode 和模拟器。

【讨论】:

【参考方案7】:

我遇到了同样的问题,我尝试更改音频设置,但对我没有帮助,我检查了运行低于 14.0 操作系统的模拟器是否发生了此问题,我在操作系统 14.4 的模拟器中运行了代码,然后它对我有用。

【讨论】:

以上是关于使用 iOS 模拟器的 AVAudioPlayer 错误的主要内容,如果未能解决你的问题,请参考以下文章

来自服务器的 MP3 文件在 iOS7 中无法使用 AVAudioPlayer 播放

使用 AVAudioPlayer 没有声音

带有 iOS 6 AVAudioPlayer 的 iPhone 4S 工作正常,但没有声音

AVAudioPlayer 在 IOS 5 中无法正常工作

使用 AVAudioPlayer 解包 Optional 值时意外发现 nil

AVAudioPlayer 无法在某些设备上播放