2009-06-30 6 views
2

私はAudio Queueサービスを使用してiPhoneにオーディオを録音しています。録音を開始するときにレイテンシの問題が発生しています。ここでのコードは(約)である:AudioQueueStart()を使用した場合の遅延

2009-06-30 19:18:59.631 app[24887:20b] Starting recording 
2009-06-30 19:18:59.828 app[24887:20b] Queued buffers 
2009-06-30 19:19:00.849 app[24887:20b] Started recording, status = 0 

注意メッセージ「録画の開始」「キューバッファ」メッセージと2の間に1秒の遅延:

OSStatus status = AudioQueueNewInput(
    &recordState.dataFormat, // 1 
    AudioInputCallback, // 2 
    &recordState, // 3 
    CFRunLoopGetCurrent(), // 4 
    kCFRunLoopCommonModes, // 5 
    0, // 6 
    &recordState.queue); // 7 

// create buffers 
for(int i = 0; i < NUM_BUFFERS; i++) 
{ 
    if (status == 0) 
     status = AudioQueueAllocateBuffer(recordState.queue, BUFFER_SIZE, &recordState.buffers[i]); 
} 

DebugLog(@"Starting recording\n"); 
OSStatus status = 0; 
for(int i = 0; i < NUM_BUFFERS; i++) 
{ 
    if (status == 0) 
     status = AudioQueueEnqueueBuffer(recordState.queue, recordState.buffers[i], 0, NULL); 
} 
DebugLog(@"Queued buffers\n"); 
if (status == 0) 
{ 
    // start audio queue 
    status = AudioQueueStart(recordState.queue, NULL); 
} 
DebugLog(@"Started recording, status = %d\n", status); 

ログ出力は次のようになります。どのように私はそれを取り除くことができるアイデア、私はすぐに私のアプリを起動すると録音を開始するから?

ところで、1秒間はシミュレータとデバイスでかなり一貫しており、バッファの数やサイズの影響を受けていないようです。古いモノラル16ビットPCMを使用する。

答えて

-2

マイクタイソンは、彼のblogthisをカバーしています。

しかし、すぐに録音を開始するには、リモートオーディオユニット、またはAVAudioEngineを使用する方がよいでしょう。

+0

ありがとう、このページも役に立ちます:http://michael.tyson.id.au/2009/02/15/developing-loopy-part-2-implementation/ – sehugg

+0

これは私が探していたページです。それは良いものです。 –

+0

あなたはこの仕事をするためにあなたが何をしたのか教えてもらえますか?私は同じ問題を抱えているため、そのブログで正しい情報を見つけることができないようです。あなたはkAudioSessionProperty_PreferredHardwareIOBufferDurationについて話していますか? – madmik3

関連する問題