Pregunta

Estoy utilizando los servicios de audio de cola para grabar audio en el iPhone. Estoy teniendo un problema de latencia, aunque cuando se inicia la grabación. Aquí está el código (aprox):

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

La salida del registro es el siguiente:

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

Tenga en cuenta el retraso de 1 segundo entre el mensaje "en cola buffers" y segundo mensaje "Iniciando la grabación". Alguna idea de cómo puedo deshacerse de él, aparte de iniciar la grabación tan pronto como empiezo mi aplicación?

Por cierto, el 1-segundo es bastante consistente en el simulador y de dispositivos, y no parece ser afectada por número o tamaño de los buffers. Usando un buen mono PCM de 16 bits de edad.

¿Fue útil?

Solución

Mike Tyson cubre este en su el blog .

Sin embargo, si usted está buscando para empezar a grabar rápidamente que lo haría mejor utilizar una unidad de audio remoto, o AVAudioEngine.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top