Frage

ich die Audio Warteschlangendienste bin mit Audio auf dem iPhone aufzeichnen. Ich habe allerdings eine Latenz Problem beim Starten der Aufnahme. Hier ist der Code (ca.):

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);

Die Log-Ausgabe sieht wie folgt aus:

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

Beachten Sie die 1-Sekunden-Verzögerung zwischen der „Queued Buffers“ Nachricht und 2. „Aufnahme starten“ -Meldung. Alle Ideen, wie kann ich es loswerden, abgesehen von der Aufnahme beginnen, sobald ich meine app starten?

BTW, die 1-Sekunden sind ziemlich konsistent in dem Simulator und Gerät, und scheinen nicht durch die Anzahl oder Größe von Puffern betroffen zu sein. Mit guten alten Mono-16-Bit-PCM.

War es hilfreich?

Lösung

Mike Tyson deckt dieses href="http://michael.tyson.id.au" in seinem Blog .

Allerdings, wenn Sie suchen schnell zum Starten der Aufnahme Du besser tun würde, ein Remote-Audio-Gerät zu verwenden, oder AVAudioEngine.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top