Как установить MediaConstraints в peerConnection.CreateAnswer () для видеовызовов с помощью WebRTC Jar для Android - PullRequest
0 голосов
/ 07 сентября 2018

Я сослался и смешал код из интернета, все работает нормально, но когда я передаю новый MediaContraints () в pc.createAnswer (), Метод pc.setLocalDescription () не был вызван. Но когда я передаю ограничения, такие как «offerToRecieveAudio» и «video», это правда, выдавая ошибку как недопустимые ограничения.

Может ли кто-нибудь мне помочь.

Спасибо

 private void createAnswer()
{
    Log.e(TAG,"Create Answer...............................");


    peerConnection.createAnswer(new CustomSdpObserver("create Answer")
    {
        @Override
        public void onCreateSuccess(SessionDescription sessionDescription)
        {
            super.onCreateSuccess(sessionDescription);

            Log.e(TAG,"onCreateAnswer...............................");

            peerConnection.setLocalDescription(new CustomSdpObserver("create Answer Local Description")
            {
                @Override
                public void onCreateSuccess(SessionDescription sessionDescription)
                {
                    super.onCreateSuccess(sessionDescription);

                    try {
                        JSONObject json = new JSONObject();
                        JSONObject jsonObject = new JSONObject();



                        JSONObject sessDescObj = new JSONObject();
                        sessDescObj.put("sdp",sessionDescription.description);
                        sessDescObj.put("type","ANSWER");
                        json.put("type", "rtc");
                        json.put("dest", CustomWebSocketListener.fromUser);
                        jsonObject.put("sdp", sessDescObj);



                        json.put("data",jsonObject);
                        Log.d(TAG,"Answer Success " + json.toString());

                        ws1.send(json.toString());
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, sessionDescription);
        }

        @Override
        public void onCreateFailure(String s)
        {
            super.onCreateFailure(s);

            Log.e(TAG,"onCreateFailure Answer " + s);
        }

        @Override
        public void onSetSuccess()
        {
            super.onSetSuccess();

            Log.e(TAG,"onSetSuccess Answer");
        }

        @Override
        public void onSetFailure(String s)
        {
            super.onSetFailure(s);

            Log.e(TAG,"onSetFailure Answer" + s);
        }
    }, new MediaConstraints());
}

1 Ответ

0 голосов
/ 21 сентября 2018

Я сам исправил эту проблему и отправлял неверный формат данных на сервер, поэтому не смог ответить на вызов в pc.createAnswer ().

правильный формат данных:

{"type":"rtc","dest":"z","data":{"sdp":{"sdp":"v=0\r\no=- 524024530293356509 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS ARDAMS\r\nm=audio 9 UDP\/TLS\/RTP\/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:klaX\r\na=ice-pwd:XMJFsHZ4YD0RzSKEkaHOPY9p\r\na=ice-options:renomination\r\na=fingerprint:sha-256 FA:BC:AC:9C:8C:FD:27:8A:24:C3:7E:14:06:14:1F:2D:1E:F9:EC:4F:6E:B7:AD:AE:A4:FE:34:D7:84:9B:32:7E\r\na=setup:active\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus\/48000\/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC\/16000\r\na=rtpmap:104 ISAC\/32000\r\na=rtpmap:9 G722\/8000\r\na=rtpmap:102 ILBC\/8000\r\na=rtpmap:0 PCMU\/8000\r\na=rtpmap:8 PCMA\/8000\r\na=rtpmap:106 CN\/32000\r\na=rtpmap:105 CN\/16000\r\na=rtpmap:13 CN\/8000\r\na=rtpmap:110 telephone-event\/48000\r\na=rtpmap:112 telephone-event\/32000\r\na=rtpmap:113 telephone-event\/16000\r\na=rtpmap:126 telephone-event\/8000\r\na=ssrc:257339793 cname:PWk1dSqFR0EwmC9i\r\na=ssrc:257339793 msid:ARDAMS ARDAMSa0\r\na=ssrc:257339793 mslabel:ARDAMS\r\na=ssrc:257339793 label:ARDAMSa0\r\nm=video 9 UDP\/TLS\/RTP\/SAVPF 96 98 100 127 97 99 101\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:klaX\r\na=ice-pwd:XMJFsHZ4YD0RzSKEkaHOPY9p\r\na=ice-options:renomination\r\na=fingerprint:sha-256 FA:BC:AC:9C:8C:FD:27:8A:24:C3:7E:14:06:14:1F:2D:1E:F9:EC:4F:6E:B7:AD:AE:A4:FE:34:D7:84:9B:32:7E\r\na=setup:active\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http:\/\/www.ietf.org\/id\/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http:\/\/www.webrtc.org\/experiments\/rtp-hdrext\/playout-delay\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8\/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:98 VP9\/90000\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtpmap:100 red\/90000\r\na=rtpmap:127 ulpfec\/90000\r\na=rtpmap:97 rtx\/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:99 rtx\/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:101 rtx\/90000\r\na=fmtp:101 apt=100\r\na=ssrc-group:FID 706483969 3503188891\r\na=ssrc:706483969 cname:PWk1dSqFR0EwmC9i\r\na=ssrc:706483969 msid:ARDAMS ARDAMSv0\r\na=ssrc:706483969 mslabel:ARDAMS\r\na=ssrc:706483969 label:ARDAMSv0\r\na=ssrc:3503188891 cname:PWk1dSqFR0EwmC9i\r\na=ssrc:3503188891 msid:ARDAMS ARDAMSv0\r\na=ssrc:3503188891 mslabel:ARDAMS\r\na=ssrc:3503188891 label:ARDAMSv0\r\n","type":"answer"}}}

Java-код

peerConnection.createAnswer(new SimpleSdpObserver() {

        @Override
        public void onCreateSuccess(SessionDescription sessionDescription) {
            peerConnection.setLocalDescription(new SimpleSdpObserver(), sessionDescription);
            //JSONObject message = new JSONObject();
            JSONObject json = new JSONObject();
            JSONObject jsonObject = new JSONObject();
            try {
                json.put("type", "rtc");
                json.put("dest", CustomWebSocketListener.fromUser);
                JSONObject jsonObject1 = new JSONObject();
                jsonObject1.put("sdp", sessionDescription.description);
                jsonObject1.put("type", "answer");
                jsonObject.put("sdp", jsonObject1);//sessionDescription.description
                json.put("data", jsonObject);

                sendMessage(json);


            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

Вы также можете посмотреть на это не удается добавить описание удаленного сеанса в клиенте webrtc для Android

из Github https://github.com/IhorKlimov/Android-WebRtc/blob/master/app/src/main/java/com/myhexaville/androidwebrtc/tutorial/CompleteActivity.java

...