AudioQueueStart返回错误代码-50

时间:2017-12-18 11:58:11

标签: ios swift audiotoolbox audioqueueservices

开始录音有时会出错,而且方法会返回错误

  

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

按照以下步骤录制音频 -

  1. 创建了一个用于录制音频数据的新音频队列。

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

  2. 设置音频队列属性值。

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

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

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

  4. 为音频队列分配缓冲区以进行录制或播放。

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

  5. 为属性添加了侦听器回调。

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

  6. 开始播放或录制音频。

    status = AudioQueueStart(_state.queue, NULL);

  7. 最后一步用

    返回错误
      

    错误代码-50

3 个答案:

答案 0 :(得分:1)

我刚才遇到了同样的问题。无论出于何种原因,两次调用AudioQueueStart为我做了诀窍:

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

答案 1 :(得分:0)

可以找到here,这是AVAudioSessionErrorCodeBadParam

显然,您指定的其中一个参数无效或缺少参数。

this可能有帮助吗?

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

祝你好运!

答案 2 :(得分:0)

我收到此错误是因为我的 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