Ich verwende die Audio Queue-Dienste, um Audio auf dem iPhone aufzunehmen. Ich habe jedoch ein Latenzproblem beim Starten der Aufnahme. Hier ist der Code (ca.):Verzögerung bei der Verwendung von AudioQueueStart()
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 dem "Queued Buffers" Nachricht und 2. "Aufnahme starten" -Meldung. Irgendwelche Ideen, wie ich es loswerden kann, abgesehen von der Aufnahme, sobald ich meine App starte?
BTW, die 1-Sekunde ist ziemlich einheitlich in den Simulator und Gerät, und scheint nicht von der Anzahl oder Größe der Puffer betroffen sein. Mit gutem alten 16-Bit-Mono-PCM.
Danke, diese Seite ist auch hilfreich: http://michael.tyson.id.au/2009/02/15/developing-loopy-part-2-implementation/ – sehugg
Das ist die Seite, die ich gesucht habe. Es ist gutes Zeug. –
Können Sie mir sagen, was Sie getan haben, damit das funktioniert? Ich habe das gleiche Problem und kann anscheinend nicht die richtigen Informationen in diesem Blog finden. Sprechen Sie über kAudioSessionProperty_PreferredHardwareIOBufferDuration? – madmik3