Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios10 iphone5s voip虹吸pjsip2.5.5打开声音设备时出错_Ios_C_Voip_Pjsip_Siphon - Fatal编程技术网

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

ios10 iphone5s voip虹吸pjsip2.5.5打开声音设备时出错,ios,c,voip,pjsip,siphon,Ios,C,Voip,Pjsip,Siphon,有人能告诉我为什么会这样吗 iOS10、iPhone5s、VOIP虹吸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)

有人能告诉我为什么会这样吗

iOS10、iPhone5s、VOIP虹吸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
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.
     */
}
今天(2016-12-16),我收到了相同的错误,但错误号不同(iphone5 ios10.1.1虹吸pjsip2.5.5)


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

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
我将其更改为播放和录制:

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
在那之后,它起了作用。因此,如果您在代码中的某个位置将音频会话设置为播放,请将其更改为播放和录制

@阿尔塔奈

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)")
    }
}

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

步骤2:选择并在列表中添加隐私-麦克风使用说明

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


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

最后,我用IOS的CallKit修复了这个错误,请看一下这个网站:

详细信息:CallKit框架允许应用程序使用本机手机界面接收来电和拨打外线电话。为了实现这一点,CallKit要求呼叫音频仅在音频会话被激活时启动,因此建议在使用PJSIP时,仅在必要时打开声音设备。可通过以下方式完成:

在没有声音设备的情况下启动PJSIP(启动后调用pjsua_set_no_snd_dev())。使用相同的API(pjsua_set_no_snd_dev())关闭未使用的声音设备。音频会话激活后,使用API pjsua_set_snd_dev()打开声音设备。下面是一个关于如何将CallKit与PJSIP集成的示例,委托函数取自​苹果公司提供的Speakerbox示例应用程序

拨出电话:

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().
         */
    }
要启动声音设备,请执行以下操作:

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

你找到了解决这个问题的方法吗?我检查了pjsip源代码,在coreaudio_dev.m中找到了setCategory:AvaudioSessionCategoryPlayRecord,我确信它使用了AvaudioSessionCategoryPlayRecord。所以,这不是原因。因为现在不推荐使用这个“session.setCategory(AvaudioSessionCategoryPlayPlayRecord)”“session.setCategory(AVAudioSession.Category.playAndRecord,mode:AVAudioSession.mode.voiceChat,options:AVAudioSession.CategoryOptions.defaultToSpeaker)”但控件似乎从未在“func提供程序”(provider:CXProvider,didActivate audioSession:AVAudioSession)中着陆" . 有什么提示吗@DadoZolic@Altanai奇怪,因为它没有说我的Xcode(10.1,使用Swift 4)中不推荐使用它。但我已经更新了关于如何设置音频会话的答案。调用提供程序didActivate时调用setAudioSessionActive。在拨打或接听电话之前调用configureAudioSession。关于tje provider didActivate函数,它不是通过设置AudioSession调用的。它由CX调用操作调用,如CXStartCallAction或CXAnswerCallAction。是的,我已经完成了这些步骤。错误有时会发生,大多数情况下,它工作得很好。@steve在执行上述步骤之前,音频正在工作或完全不工作?我从一开始就执行这些步骤,所以这不是原因。音频大部分时间都工作得很好,只是有时候我没有听到声音,然后我检查日志,发现这些问题。