【问题标题】:How Can I send local video stream to server?如何将本地视频流发送到服务器?
【发布时间】:2020-04-10 14:04:51
【问题描述】:

我能够在本地创建报价并将 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 aiortc 中

我收到“onIceConnectionChange: FAILED” 我需要添加到 -> addIceCandidate 吗??

【问题讨论】:

    标签: java android webrtc webrtc-android aiortc


    【解决方案1】:

    您必须添加 peerconnection 观察者并在 onIceCandidate 方法中发送 icecandidate。在接收方,您可以添加 icecandidate。

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 2015-02-27
      相关资源
      最近更新 更多