gpt4 book ai didi

iphone - 使用AudioQueueStart()时延迟

转载 作者:行者123 更新时间:2023-12-02 22:43:59 27 4
gpt4 key购买 nike

我正在使用音频队列服务在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秒的延迟。除了启动应用程序后立即开始录制,我还有什么想法可以摆脱它?

顺便说一句,1秒在模拟器和设备中非常一致,并且似乎不受缓冲区数量或缓冲区大小的影响。使用良好的旧单声道16位PCM。

最佳答案

迈克·泰森(Mike Tyson)在他的this中介绍了blog

但是,如果您希望快速开始录制,则最好使用远程音频单元或AVAudioEngine

关于iphone - 使用AudioQueueStart()时延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1066627/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com