AudioQueStart ()를 사용할 때 지연
-
21-08-2019 - |
문제
오디오 대기열 서비스를 사용하여 iPhone에서 오디오를 녹음하고 있습니다. 녹음을 시작할 때 대기 시간 문제가 있습니다. 코드는 다음과 같습니다 (대략).
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);
로그 출력은 다음과 같습니다.
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
"대기 버퍼"메시지와 두 번째 "녹화 시작"메시지 사이의 1 초 지연에 유의하십시오. 앱을 시작하자마자 녹음을 시작하는 것 외에도 어떻게 제거 할 수 있습니까?
BTW, 1 초는 시뮬레이터와 장치에서 매우 일관되며 버퍼의 수 또는 크기에 영향을받지 않는 것 같습니다. 좋은 오래된 모노 16 비트 PCM 사용.
제휴하지 않습니다 StackOverflow