AudioQueueStart 返回错误代码 -50

Posted

技术标签:

【中文标题】AudioQueueStart 返回错误代码 -50【英文标题】:AudioQueueStart is returning error code -50 【发布时间】:2017-12-18 11:58:10 【问题描述】:

开始录音有时会报错,下面的方法返回错误

错误域=NSOSStatusErrorDomain 代码=-50 "(null)" UserInfo= status = AudioQueueStart(_state.queue, NULL);

按照以下步骤录制 audo -

    为录制音频数据创建了一个新的音频队列。

    status = AudioQueueNewInput(&_state.dataFormat, AudioInputCallback, &_state, CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &_state.queue);

    设置音频队列属性值。

    status = AudioQueueSetProperty(_state.queue,kAudioQueueProperty_EnableLevelMetering,&on,sizeof(on));

    用于分配缓冲区的音频队列。

    status = AudioQueueAllocateBuffer(_state.queue, buffer_size, &_state.buffers[i]);

    将缓冲区分配给音频队列以进行录制或播放。

    status = AudioQueueEnqueueBuffer (_state.queue, _state.buffers[i], 0, NULL);

    为属性添加了监听回调。

    status = AudioQueueAddPropertyListener(_state.queue, kAudioQueueProperty_IsRunning, recordingRunningChangedCallback, &_state);

    开始播放或录制音频。

    status = AudioQueueStart(_state.queue, NULL);

最后一步返回错误

错误代码-50

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题。无论出于何种原因,两次调用AudioQueueStart 都对我有用:

status = AudioQueueStart(_state.queue, NULL);
if (status == -50) 
    status = AudioQueueStart(_state.queue, NULL);

【讨论】:

【参考方案2】:

可以找到here,这是AVAudiosessionErrorCodeBadParam

显然您指定的参数之一无效或缺少参数。

this 可能有帮助吗?

由于在 iOS 中设置音频相当复杂,我建议您从工作示例代码开始,或者遵循一个体面的教程。根据自己的经验,我可以说很容易错过一些东西并得到这样的错误。

祝你好运!

【讨论】:

【参考方案3】:

我收到此错误是因为我的 AVAudioSession 配置不正确。

如果您只有一个输出队列,您需要将您的AVAudioSession 配置为AVAudioSessionCategoryPlayback 类别。这是一些代码:

AVAudioSession *session = [AVAudioSession sharedInstance];
NSString *category = AVAudioSessionCategoryPlayback;
NSString *mode = AVAudioSessionModeDefault;
NSUInteger options = AVAudioSessionCategoryOptionMixWithOthers;
NSError *err = nil;
[session setCategory:category mode:mode options:options error:&err];

如果你想同时输出和输入,你可以用AVAudioSessionCategoryPlayAndRecord做同样的事情

【讨论】:

以上是关于AudioQueueStart 返回错误代码 -50的主要内容,如果未能解决你的问题,请参考以下文章

AudioQueueStart 返回 561015905 (AVAudioSessionErrorCodeCannotStartPlaying)

使用 AudioQueueStart() 时的延迟

AudioQueueStart() 方法无法在 ios4 后台播放音乐

在 iphone4 中打电话后 AudioQueueStart 失败

iPad 上的 AudioQueueStart() 问题

AudioQueueStart 在 iOS 7 的后台进程中失败并显示 -16981