2017-12-18 305 views
0

开始音频记录给错误和下面方法返回错误AudioQueueStart有时返回错误代码-50

错误域= NSOSStatusErrorDomain代码= -50 “(空)” 的UserInfo = 状态= AudioQueueStart(_state.queue , 空值);

其次下面的步骤,用于记录AUDO -

  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);

而且最后步骤返回错误与

错误代码-50

回答

0

中可以发现here,这是AVAudioSessionErrorCodeBadParam

显然,您指定的参数之一是无效的或参数丢失。

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

祝你好运!

0

我刚才有同样的问题。无论出于何种原因,致电AudioQueueStart两次对我来说都是诀窍:

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