AVAudioPlayer Error using iOS Simulator

若如初见. 提交于 2019-12-10 06:38:22

问题


following problem:

<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'

I found this problem already here on stackoverflow but none of the provided solutions worked for me.

Code:

#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

Delegate is set. Dont know if its important but on another mac this code runs without problems.

I use ios 6.1 and simulator 6.1


回答1:


I had this same problem, and was able to fix it by adjusting the sound settings on the mac I am running the simulator on, per the answer to this question. I was using an external sound card, and changing the audio settings on my mac in the following way did the trick:

  • Input: Internal Microphone
  • Output: Internal Speakers

Hope this helps. My code is very similar to yours, and I don't think this is a problem with your code at all.




回答2:


Confirmed that attaching an audio input device (and restarting the computer) solves the problem. I got this error when shifting from a Macbook Air to a Mac Pro Cylinder after pulling the Git repo over.

I attached my Bose AE bluetooth headset and finally got a meaningful message from Xcode, but it was still aborting:

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.

After restarting the simulator and doing the XCode dance (delete app from simulator, clean project, rebuild) I got another message:

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

Finally after restarting the machine, there are no more errors.




回答3:


I spent hours trying to figure this out, if you don't have a microphone or input device then xcode will fail to initialize AVAudioPlayer properly.

That is why plugging in some type of input device works, AVAudioPlayer is searching for an input device . You can run the same app on an iPhone and it will work just fine.

So just plugin some type of input device when running on simulator, I haven't found a way to work around this yet. And it's probably not recommended either.




回答4:


I just had this very same issue, but had speakers connected on the headphones jack. Removed the jack, fiddled with the System preferences output audio back to Built-in speakers, then quit Xcode and simulator and relaunch fixed it for me.




回答5:


Try plugging in a headphone attached with microphone and hopefully the issue'll be solved. Also restart xcode and simulator.



来源:https://stackoverflow.com/questions/17318706/avaudioplayer-error-using-ios-simulator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!