WebRTC создать канал данных из PeerConnection всегда нулевой - PullRequest
0 голосов
/ 14 января 2019

Я работаю над приложением Android WebRTC, где мне нужен канал данных для отправки дополнительной информации, когда соединение установлено. Я создаю канал данных следующим образом:

DataChannel.Init init = new DataChannel.Init();
dataChannel = peerConnection.createDataChannel("knock_data_chanel", init);

Но это не создает никаких DataChannel в моем приложении, и когда я проверяю сразу после кода выше, dataChannel всегда нулевой.

Кто-нибудь знает, как это решить? Это может быть мой PeerConnection? Или это что-то вроде MediaConstraints?

Мой PeerConnection процесс создания:

PeerConnection.RTCConfiguration rtcConfig =
    new PeerConnection.RTCConfiguration(signalingParameters.iceServers);
// TCP candidates are only useful when connecting to a server that supports
// ICE-TCP.
rtcConfig.tcpCandidatePolicy = PeerConnection.TcpCandidatePolicy.DISABLED;
rtcConfig.bundlePolicy = PeerConnection.BundlePolicy.MAXBUNDLE;
rtcConfig.rtcpMuxPolicy = PeerConnection.RtcpMuxPolicy.REQUIRE;
rtcConfig.continualGatheringPolicy = PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY;//todo change to GATHER_CONTINUALLY later if that's possible on server end.
// Use ECDSA encryption.
rtcConfig.keyType = PeerConnection.KeyType.ECDSA;
// Enable DTLS for normal calls and disable for loopback calls.
rtcConfig.enableDtlsSrtp = !peerConnectionParameters.loopback;
rtcConfig.sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN;
peerConnection = peerConnectionFactory.createPeerConnection(rtcConfig, pcObserver);

Мой SDP MediaConstraint

sdpMediaConstraints = new MediaConstraints();
sdpMediaConstraints.mandatory.add(
    new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"));
sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
    "OfferToReceiveVideo", "true"));
sdpMediaConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));

Тогда я создаю предложение с этим:

peerConnection.createOffer(sdpObserver, sdpMediaConstraints);

Любая помощь будет оценена, спасибо!

...