ios10 iphone5s voip siphon pjsip2.5.5打开声音设备时出错

有人可以告诉我为什么会发生这种情况?

iOS10,iPhone5s,VOIP Siphon pjsip2.5.5。

这些问题并不是每一次都出现,有时候你想拨打电话或接听电话(加在:20161226)。

打开声音设备时出错:

14:06:03.137742 pjsua_aud.c ....Set sound device: capture=-1, playback=-2 14:06:03.137775 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@16000/1/20ms 14:06:03.137837 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.147404 acquire_call enter,call_id:2 14:06:03.233365 level:4,msg:14:06:03.233 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@44100/1/20ms 14:06:03.233488 level:4,msg:14:06:03.233 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.263379 AVAudioSessionRouteChangeNotification ..changeReason..3 14:06:03.439201 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@48000/1/20ms 14:06:03.444813 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.518592 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@32000/1/20ms 14:06:03.518731 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.587808 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@16000/1/20ms 14:06:03.587936 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.659660 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@8000/1/20ms 14:06:03.659837 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.734433 pjsua_aud.c .....Unable to open sound device: Unknown OpenSSL error 503317117 [status=506637] 14:06:03.734512 pjsua_aud.c ....Error opening sound device: Unknown OpenSSL error 503317117 [status=506637] 14:06:03.734534 pjsua_aud.c ...Conf connect: 0 --> 2 14:06:03.734555 pjsua_aud.c ....Set sound device: capture=-1, playback=-2 14:06:03.734586 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@16000/1/20ms 14:06:03.734651 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.799718 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@44100/1/20ms 14:06:03.799847 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.868825 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@48000/1/20ms 14:06:03.869031 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:03.936294 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@32000/1/20ms 14:06:03.936423 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:04.006834 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@16000/1/20ms 14:06:04.006962 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:04.075150 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@8000/1/20ms 14:06:04.075288 coreaudio_dev. ......Using VoiceProcessingIO audio unit 14:06:04.144082 pjsua_aud.c .....Unable to open sound device: Unknown OpenSSL error 503317117 [status=506637] 14:06:04.144165 pjsua_aud.c ....Error opening sound device: Unknown OpenSSL error 503317117 [status=506637] 14:06:04.144186 pjsua_conf_connect:pjsua_conf_connect_value 506637 ret 506637 

今天(2016-12-16),我得到同样的错误,但错误号码是不同的(iphone5 ios10.1.1 siphone pjsip2.5.5)

 316-981188544 2016-12-16 10:52:29.160553 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@44100/1/20ms 316-981188544 2016-12-16 10:52:29.160689 coreaudio_dev. ......Using VoiceProcessingIO audio unit 316-981188544 2016-12-16 10:52:29.167254 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@48000/1/20ms 316-981188544 2016-12-16 10:52:29.167391 coreaudio_dev. ......Using VoiceProcessingIO audio unit 316-981188544 2016-12-16 10:52:29.172857 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@32000/1/20ms 316-981188544 2016-12-16 10:52:29.172994 coreaudio_dev. ......Using VoiceProcessingIO audio unit 316-981188544 2016-12-16 10:52:29.178400 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@16000/1/20ms 316-981188544 2016-12-16 10:52:29.178539 coreaudio_dev. ......Using VoiceProcessingIO audio unit 316-981188544 2016-12-16 10:52:29.184486 pjsua_aud.c .....Opening sound device (speaker + mic) PCM@8000/1/20ms 316-981188544 2016-12-16 10:52:29.184631 coreaudio_dev. ......Using VoiceProcessingIO audio unit 316-981188544 2016-12-16 10:52:29.195032 pjsua_aud.c .....Unable to open sound device: Unknown error -1701297535 [status=-1701297535] 316-981188544 2016-12-16 10:52:29.195105 pjsua_aud.c ....Error opening sound device: Unknown error -1701297535 [status=-1701297535] 

步骤1:首先在支持文件夹的xcode项目中打开info.plist文件,然后单击信息属性列表中的 “+”

步骤2:select并添加隐私 –列表中的麦克风使用说明

步骤3:在隐私 – 麦克风使用说明中添加值麦克风

现在编译并运行你的项目。

最后,我用IOS的CallKit修复这个bug,看看这个网站: https ://trac.pjsip.org/repos/ticket/1941

详细信息: CallKit框架允许应用程序使用本地电话UI来接听来电并拨打电话。 为了达到这个目的,CallKit要求只有在audio会话被激活时才能启动通话audio。因此,build议您在使用PJSIP时只在必要时打开音响设备。 它可以通过以下方式完成:

没有声音设备启动PJSIP(启动后通过调用pjsua_set_no_snd_dev())。 在未使用时closures声音设备,也使用相同的API(pjsua_set_no_snd_dev())。 激活audio会话后,使用API​​ pjsua_set_snd_dev()打开声音设备。 下面是一个关于如何将CallKit与PJSIP集成在一起的示例,以及Apple提供的Speakerbox示例应用程序中的委托function。

拨打电话:

 func provider(_ provider: CXProvider, perform action: CXStartCallAction) { /* 1. We must not start call audio here, and can only do so * once the audio session has been activated by the system * after having its priority elevated. So, make sure that the sound * device is closed at this point. */ /* 2. Provide your own implementation to configure * the audio session here. */ configureAudioSession() /* 3. Make call with pjsua_call_make_call(). * Then use pjsua's on_call_state() callback to report significant * events in the call's lifecycle, by calling iOS API * CXProvider.reportOutgoingCall(with: startedConnectingAt:) and * CXProvider.reportOutgoingCall(with: ConnectedAt:) */ /* 4. If step (3) above returns PJ_SUCCESS, call action.fulfill(), * otherwise call action.fail(). */ } 

处理来电:

  func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { /* 1. We must not start call audio here, and can only do so * once the audio session has been activated by the system * after having its priority elevated. So, make sure that the sound * device is closed at this point. */ /* 2. Provide your own implementation to configure * the audio session here. */ configureAudioSession() /* 3. Answer the call with pjsua_call_answer(). */ /* 4. If step (3) above returns PJ_SUCCESS, call action.fulfill(), * otherwise call action.fail(). */ } 

要启动声音设备:

 func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) { /* Start call audio media, now that the audio session has been * activated after having its priority boosted. * * Call pjsua API pjsua_set_snd_dev() here. */ } 

我的问题是,当我在来电时播放声音时,我将AudioSession caterogry Playback设置为:

 try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 

我改变它播放和logging:

 try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord) 

之后它就起作用了。 因此,如果您在代码中的某处将audio会话设置为回放,请将其更改为播放和录制。