8

次の問題:

<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 を使用しています

4

7 に答える 7

23

私はこれと同じ問題を抱えていましたが、この質問への回答に従って、シミュレーターを実行しているMacのサウンド設定を調整することで修正できました。外部サウンドカードを使用していましたが、Mac のオーディオ設定を次のように変更するとうまくいきました。

  • 入力: 内蔵マイク
  • 出力: 内部スピーカー

お役に立てれば。私のコードはあなたのコードと非常に似ていますが、これはあなたのコードの問題ではないと思います。

于 2013-08-31T21:04:28.527 に答える
3

オーディオ入力デバイスを接続(およびコンピュータを再起動)すると、問題が解決することを確認。Git リポジトリをプルした後、Macbook Air から Mac Pro Cylinder に移行すると、このエラーが発生しました。

Bose AE bluetooth ヘッドセットを接続し、最終的に 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.

最後に、マシンを再起動した後、エラーはなくなりました。

于 2015-04-21T21:27:11.547 に答える
2

マイクまたは入力デバイスがない場合、xcode は AVAudioPlayer を適切に初期化できません。

そのため、ある種の入力デバイスを接続すると機能します。AVAudioPlayer は入力デバイスを探しています。同じアプリを iPhone で実行すると、問題なく動作します。

したがって、シミュレーターで実行するときに何らかの入力デバイスをプラグインするだけで、これを回避する方法はまだ見つかりません。また、おそらく推奨されていません。

于 2015-04-21T03:12:03.137 に答える
1

私の解決策は次のとおりです。 - システム設定、オーディオ入力を内部マイク以外に設定します。 - シミュレーターで、入力を内部マイクに設定します。両方が同じ場合、何らかの形でマイクを「ロック」します。

すべてに: 回答ありがとうございます。自分のプログラミングが悪いと思っていたのですが、実は Apple の設計が悪いのです。このトピックは 6 年前に提起されましたが、Apple はまだこのバグを解決していません!

于 2020-02-19T18:09:43.287 に答える