Как я могу отправить локальный видео поток на сервер? - PullRequest
0 голосов
/ 10 апреля 2020

Я могу создатьOffer локально и отправить sdp на сервер. Также получил ответ сервера и получил sdp.

Теперь, как я могу отправить свой локальный видеопоток на сервер? Я не хочу серверное видео.

private void startStreamingVideo() {
    //creating local mediastream
    MediaStream mediaStream = factory.createLocalMediaStream("ARDAMS");
    mediaStream.addTrack(localAudioTrack);
    mediaStream.addTrack(localVideoTrack);
    localPeerConnection.addStream(mediaStream);

    MediaConstraints sdpMediaConstraints = new MediaConstraints();
    sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "false"));
    sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveVideo", "false"));

    localPeerConnection.createOffer(new SimpleSdpObserver() {
        @Override
        public void onCreateSuccess(SessionDescription sessionDescription) {
            Log.d(TAG, "onCreateSuccess: ");
            localPeerConnection.setLocalDescription(new SimpleSdpObserver(), sessionDescription);
            //remotePeerConnection.setRemoteDescription(new SimpleSdpObserver(), sessionDescription);

            callApiOffer(new Example(sessionDescription.description,sessionDescription.type.name().toLowerCase()));
        }
    }, sdpMediaConstraints);
}



private void callApiOffer(Example example){
        Utils.getInstance().getRetrofitInstance1().postRequest(example).enqueue(new Callback<ResponseExample>() {

            @Override
            public void onResponse(Call<ResponseExample> call, Response<ResponseExample> response) {
                ResponseExample body = response.body();
                if (body != null) {
                    Log.e(TAG, body.getType());
                    Log.e(TAG, body.getSdp());
                    // Here, I got server sdp and type="answer"
                    SessionDescription sessionDescription = new SessionDescription(Type.ANSWER, body.getSdp());
                    localPeerConnection.setRemoteDescription(new SimpleSdpObserver(), sessionDescription);
                    //doAnswer();
                }
            }

            @Override
            public void onFailure(Call<ResponseExample> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }

Бэкэнд-сервер находится в Python aiort c

Я получаю "onIceConnectionChange: FAILED" Нужно I добавить в -> addIceCandidate ??

1 Ответ

0 голосов
/ 10 апреля 2020

Вы должны добавить наблюдателя peerconnection и в методе onIceCandidate для отправки icecandidate. На принимающей стороне вы можете добавить ледяной кандидат.

...