gpt4 book ai didi

iphone - AudioQueueEnqueueBuffer 失败

转载 作者:行者123 更新时间:2023-11-28 18:44:41 25 4
gpt4 key购买 nike

我对 AudioQueueEnqueueBuffer 的调用失败,OSStatus -66686。我以前从未见过此错误代码,并且无法在任何地方找到有关它的任何信息。将其转换为 NSError 并打印其描述会得到以下控制台输出:

错误:Error Domain=NSOSStatusErrorDomain Code=-66686 “操作无法完成。(OSStatus 错误 -66686。)”

这是我所有相关的 AudioQueue 初始化代码:

AudioQueueRef       audioQueue;
AudioQueueBufferRef aq_buffer[3];
AudioStreamBasicDescription streamFormat;
streamFormat.mSampleRate = 44100;
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
streamFormat.mBitsPerChannel = 16;
streamFormat.mChannelsPerFrame = 1;
streamFormat.mBytesPerPacket = 2 * streamFormat.mChannelsPerFrame;
streamFormat.mBytesPerFrame = 2 * streamFormat.mChannelsPerFrame;
streamFormat.mFramesPerPacket = 1;
streamFormat.mReserved = 0;

OSStatus err;
err = AudioQueueNewOutput(&streamFormat, AudioPlayCallback, self,
CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &audioQueue);

// Start playback
err = AudioQueueStart(audioQueue, NULL);

// Enqueue buffers
for (int i = 0; i < 3; i++) {
err = AudioQueueAllocateBuffer (audioQueue, 1024, &aq_buffer[i]);
err = AudioQueueEnqueueBuffer (audioQueue, aq_buffer[i], 0, NULL);
NSLog(@"err : %d", err);
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain
code:err
userInfo:nil];
NSLog(@"Error: %@", [error description]);
}

我已经尝试修改我分配的缓冲区的大小,但没有任何效果(并且对 AudioQueueAllocateBuffer 的调用无论如何都不会失败)。我试过在 AudioQueueStart 与缓冲区分配和排队调用之间切换调用顺序,但没有效果。我检查了 AudioQueue.h 中的注释,但没有发现我做错了什么。错误描述太模糊,没有帮助。

为什么我的 AudioQueueEnqueueBuffer 调用失败了?

最佳答案

使用 Spotlight 搜索显示 “66686” 可在 AudioQueue.h 中找到:

kAudioQueueErr_BufferEmpty          = -66686

因此,无论您尝试做什么,缓冲区都是空的。

快速浏览一下上面的代码,在我看来它就像是 SpeakHere 录音代码。但是,您已经在上面对其进行了设置以进行播放。

无论哪种情况,您都需要在启动队列之前分配队列的缓冲区。对于记录,当新记录的数据可用时,您的函数回调将被定期调用。

对于播放,当您需要向队列提供更多音频数据时,将定期调用回调函数。

关于iphone - AudioQueueEnqueueBuffer 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136064/

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