ios10 iphone5s voip siphon pjsip2.5.5 Error openin

2019-05-29 08:41发布

Someone could tell me why this happen?

iOS10, iPhone5s, VOIP Siphon pjsip2.5.5.

These issue was not appear every time,it came sometimes when you want to make call or answer call (add at:20161226).

Error opening sound device:

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

today(2016-12-16),I get the same bug,but the error number is different(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]

3条回答
Luminary・发光体
2楼-- · 2019-05-29 08:43

Step 1: At first open info.plist file in your xcode project in Supporting Files Folder and click "+" in Information property list.

Step 2: Select and Add Privacy - Microphone Usage Description in the list.

Step 3: Add the value Microphone in the Privacy - Microphone Usage Description.

Now Compile and run your project.

查看更多
疯言疯语
3楼-- · 2019-05-29 08:44

My issue was that, when I played a sound on incoming calls I set the AudioSession caterogry Playback like:

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)

I changed it to Play and record:

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)

and it worked after that. So if you somewhere in your code set the audio session to playback, change it to play and record.

@Altanai

func setAudioSessionActive(active: Bool) -> Bool{
    let sessionInterface = AVAudioSession.sharedInstance()
    do{
        try sessionInterface.setActive(active)

        if(active){
            if(sessionInterface.category != AVAudioSessionCategoryPlayAndRecord){
                try sessionInterface.setCategory(AVAudioSessionCategoryPlayAndRecord)
            }
            if(sessionInterface.mode != AVAudioSessionModeVoiceChat){
                try sessionInterface.setMode(AVAudioSessionModeVoiceChat)
            }
        }
        return true
    }
    catch let error{
        return false
    }
}

func configureAudioSession(){
    let sessionInterface = AVAudioSession.sharedInstance()

    do{
        if(sessionInterface.responds(to: #selector(AVAudioSession.setCategory(_:with:)))){
            try sessionInterface.setCategory(AVAudioSessionCategoryPlayAndRecord, with: AVAudioSessionCategoryOptions.allowBluetooth)
        }
        else{
            try sessionInterface.setCategory(AVAudioSessionCategoryPlayAndRecord)
        }
        try sessionInterface.setMode(AVAudioSessionModeVoiceChat)

    }
    catch let error{
        NSLog("SipManager - configureAudioSession error: \(error)")
    }
}
查看更多
走好不送
4楼-- · 2019-05-29 09:07

At last,I fix this bug with IOS's CallKit,take a look at this website: https://trac.pjsip.org/repos/ticket/1941

Details: CallKit framework allows apps to use the native phone UI to receive incoming calls and make outgoing calls. In order to achieve this, CallKit requires the call audio to start only when audio session has been activated, thus it's recommended that when using PJSIP, you open the sound device only when necessary. It can be done by:

Starting PJSIP with no sound device (by calling pjsua_set_no_snd_dev() after startup). Close the sound device when unused, also with the same API (pjsua_set_no_snd_dev()). Upon audio session activation, open the sound device with the API pjsua_set_snd_dev(). Below is an example on how to integrate CallKit with PJSIP, with the delegate functions taken from ​Speakerbox sample app provided by Apple.

To make outgoing call:

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().
         */
    }

To handle incoming call:

 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().
         */
    }

To start sound device:

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.
     */
}
查看更多
登录 后发表回答