Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Android pjsip:第一个传入视频呼叫提供CallmediaInfo状态PJSUA\u call\u MEDIA\u NONE_Android_Pjsip_Pjsua2_Voip Android - Fatal编程技术网

Android pjsip:第一个传入视频呼叫提供CallmediaInfo状态PJSUA\u call\u MEDIA\u NONE

Android pjsip:第一个传入视频呼叫提供CallmediaInfo状态PJSUA\u call\u MEDIA\u NONE,android,pjsip,pjsua2,voip-android,Android,Pjsip,Pjsua2,Voip Android,我正在使用Pjsip(v2.6)进行VoIP音频和视频通话 我在第一次视频来电中遇到问题。当我注册用户并进行视频通话时,它总是失败 当我调试代码时,我发现我收到的CallMediaInfo状态为PJSUA\u CALL\u MEDIA\u NONE。 当我进行第二次尝试时,我将其作为PJSUA\u CALL\u MEDIA\u ACTIVE收到,并显示预览 以下是我的makeCall代码: fun makeCall(id: String, isVideo: Boolean) {

我正在使用Pjsip(v2.6)进行VoIP音频和视频通话

我在第一次视频来电中遇到问题。当我注册用户并进行视频通话时,它总是失败

当我调试代码时,我发现我收到的CallMediaInfo状态为PJSUA\u CALL\u MEDIA\u NONE。 当我进行第二次尝试时,我将其作为PJSUA\u CALL\u MEDIA\u ACTIVE收到,并显示预览

以下是我的makeCall代码:

fun makeCall(id: String, isVideo: Boolean) {
        video = isVideo
        val buddyUri = "sip:$CALLEE@$URI"

        val call = MyCall(account, -1)
        val prm = CallOpParam(true)
        val callSettings = prm.opt
        if (isVideo) {
            callSettings.videoCount = 1
            callSettings.audioCount = 1
        } else {
            callSettings.audioCount = 1
            callSettings.videoCount = 0
        }

        try {
            call.makeCall(buddyUri, prm)
        } catch (e: Exception) {
            call.delete()
        }
        currentCall = call
    }
以下是我执行传入呼叫通知的代码:

if (m?.what == Constants.MSGTYPE.INCOMING_CALL) {

            /* Incoming call */
            val call = m.obj as MyCall
            val prm = CallOpParam()

            /* Only one call at anytime */
            if (currentCall != null) {
                call.delete()
                return true
            }

            /* Answer with ringing */
            prm.statusCode = pjsip_status_code.PJSIP_SC_RINGING
            try {
                val callSetting = prm.opt
                callSetting?.audioCount = 1
                if (video) {
                    callSetting?.videoCount = 1
                } else callSetting?.videoCount = 0
                call.answer(prm)
            } catch (e: Exception) {
                println(e)
            }

            currentCall = call
            if (call.info.remOfferer && call.info.remVideoCount == 1L) {
                // start Video Activity
            } else {
                // start Audio Activity
            }
        }
当我接受呼叫时,我收到onCallMediaState回调:

override fun onCallMediaState(prm: OnCallMediaStateParam) {
        val ci: CallInfo
        try {
            ci = info
        } catch (e: Exception) {
            return
        }

        val cmiv = ci.media

        for (i in 0 until cmiv!!.size()) {
            val cmi = cmiv.get(i.toInt())
            if (cmi.type == pjmedia_type.PJMEDIA_TYPE_AUDIO && (cmi.status == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE || cmi.status == pjsua_call_media_status.PJSUA_CALL_MEDIA_REMOTE_HOLD)) {
                LogUtils.e("AANAL onCallMediaState  Audio")
                handleAudioMedia(getMedia(i))
            } else if (cmi.type == pjmedia_type.PJMEDIA_TYPE_VIDEO &&
//                    cmi.status == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE &&
                    cmi.videoIncomingWindowId != pjsua2.INVALID_ID) {
                LogUtils.e("AANAL onCallMediaState  Video")
                handleVideoMedia(cmi)
            }
        }

        MyApp.observer.notifyCallMediaState(this)
    }
有人能帮我吗

提前谢谢你

我找到了自己的答案。 这是因为我在接听电话时设置的视频计数不正确

在呼入呼叫回调中调用call.answer方法时,请确保将videoCount设置为1

例如

我找到了自己的答案。 这是因为我在接听电话时设置的视频计数不正确

在呼入呼叫回调中调用call.answer方法时,请确保将videoCount设置为1

例如


pjsua2 android示例应用程序是否已经实现了视频调用功能?它确实支持视频调用。@ANAL Mehta:我无法为pjsip的android ndk21构建Openh264库。请看我的帖子。。pjsua2 android示例应用程序上已经实现了视频调用功能。它确实支持视频调用。@ANAL Mehta:我无法为pjsip的android ndk21构建Openh264库。请看我的帖子。。在这里
     if (m?.what == Constants.MSGTYPE.INCOMING_CALL) {
        ...
        try {
                        val callSetting = prm.opt
                        callSetting?.audioCount = 1
                        // I have corrected this videoCount
                        if (call.info.remOfferer && call.info.remVideoCount == 1L) { 
                            callSetting?.videoCount = 1
                        } else callSetting?.videoCount = 0
                        call.answer(prm)
                    } catch (e: Exception) {
                        println(e)
                    }

        ...
        }