1

私が取り組んでいる cocos2d ゲームで AVAudioRecorder を使用する AVAudioSession に問題があります。

シンプルな AVAudioRecorder の例を使用してマイク入力をキャプチャして、ユーザーがマイクで音を出すタイミングを検出しようとしています (/dev/null に録音しているため、音自体は問題ではありません)。

マイクのセットアップコードは次のとおりです。

    NSURL *newURL = [[NSURL alloc] initFileURLWithPath:@"/dev/null"];

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];

    NSDictionary *recordSettings =
    [[NSDictionary alloc] initWithObjectsAndKeys:
     [NSNumber numberWithFloat: 22050.0], AVSampleRateKey,
     [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
     [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
     [NSNumber numberWithInt: AVAudioQualityLow],
     AVEncoderAudioQualityKey,
     nil];

    micInput = [[AVAudioRecorder alloc] initWithURL:newURL settings:recordSettings error:nil];
    [newURL release];
    [recordSettings release];
    [micInput setMeteringEnabled:YES];

上記のコードを使用した iPhone では、すべてのオーディオ (サウンド エフェクト、バックグラウンド ミュージックなど) が非常に低いレベルで再生された状態でシーンが開始されます。これを iPad または iPod Touch でテストすると、バックグラウンド オーディオが外部スピーカーから期待どおりに再生されます。ゲームのこの特定の部分で iPhone バージョンでプレイすると、ゲームの音量が大幅に低下するため、これは問題です。

AVAudioSession セットアップ行をコメント アウトすると、サウンドは外部スピーカーから再生されますが、もちろん、マイク入力を取得できなくなります。この問題の回避策または解決策はありますか? AVAudioRecorder で録音できるようにする必要がありますが、iPhone の外部スピーカーからのオーディオ出力も必要です。

ありがとう!

4

1 に答える 1

2

オーディオ セッションをセットアップした後、次のようなことを試してください。

         UInt32 ASRoute = kAudioSessionOverrideAudioRoute_Speaker;
         AudioSessionSetProperty (
           kAudioSessionProperty_OverrideAudioRoute,
           sizeof (ASRoute),
           &ASRoute
         );
于 2011-01-25T01:07:37.873 に答える