我已经在控制台日志中注意到此错误一段时间了。尽管它不会影响我的应用程序的执行,但我发现它确实很烦人。因此,我开始跟踪此错误的来源。事实证明,当我调用availableInputs时
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
它会给我日志消息:
ERROR: [0x3d61318c] AVAudioSessionPortImpl.mm:50: ValidateRequiredFields: Unknown selected data source for Port iPhone Microphone (type: MicrophoneBuiltIn)
我尝试打印输入。
Printing description of inputs:
<__NSArrayI 0x188c4610>(
<AVAudioSessionPortDescription: 0x188c4580, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = (null)>,
<AVAudioSessionPortDescription: 0x18835d90, type = BluetoothHFP; name = Valore-BTi22; UID = 00:23:01:10:38:77-tsco; selectedDataSource = (null)>
因此selectedDataSource为(null)。我不知道该怎么做才能使其不为null? iPhone麦克风是内置输入...我想它已经由Apple设置了吗?
最佳答案
这个问题似乎不仅仅发生在我身上...我将在这里分享我的理解..
我的情况是..我正在使用pjsip库,该库对音频资源具有较低级别的控制。我注意到,声音设备在我调用[[AVAudioSession sharedInstance] availableInputs];
之前已经关闭
因此,(我想)AVAudioSession
作为高级控件,无法为其输入找到相应的音频数据源-如错误所示...
为了进一步研究该问题,您最好在代码中的某处检查修改音频源的位置,并在调用AVAudioSession
之前确保已激活音频源。
我现在只能走这么远……始终对音频控制有更深入的了解和更好的解释!!