开始录音有时会出错,而且方法会返回错误
错误域= NSOSStatusErrorDomain代码= -50“(null)”UserInfo = status = AudioQueueStart(_state.queue,NULL);
按照以下步骤录制音频 -
创建了一个用于录制音频数据的新音频队列。
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
答案 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