【问题标题】:AVAudioPlayer Error using iOS Simulator使用 iOS 模拟器的 AVAudioPlayer 错误
【发布时间】: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'

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

代码:

#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

【问题讨论】:

    标签: ios-simulator runtime-error avaudioplayer


    【解决方案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 的模拟器中运行了代码,然后它对我有用。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-04-25
              • 1970-01-01
              • 2011-05-18
              • 2015-01-21
              相关资源
              最近更新 更多