From: gregor herrmann Date: Wed, 1 Jul 2020 21:17:56 +0000 (+0200) Subject: Improve ICE message we send. X-Git-Url: https://git.toastfreeware.priv.at/toast/stream2beamer.git/commitdiff_plain/7fc8b5a1f9425a11ccf996b578ca5f907722d786 Improve ICE message we send. - Dynamically set sdpMid, like browsers do. - Send a usernameFragment, parsed from the sdp message. --- diff --git a/laplace_client.py b/laplace_client.py index 6ec2bb8..1b9c8f0 100755 --- a/laplace_client.py +++ b/laplace_client.py @@ -31,6 +31,7 @@ class WebRTCClient: self.ssl_context.verify_mode = ssl.CERT_NONE self.websocket = None self.session_id = None + self.userfragments = [] def send_sdp_offer(self, offer): text = offer.sdp.as_text() @@ -57,6 +58,9 @@ class WebRTCClient: promise.interrupt() self.send_sdp_offer(offer) + sdp = offer.sdp + self.userfragments = [sdp.get_media(i).get_attribute_val('ice-ufrag') for i in range(sdp.medias_len())] + def on_negotiation_needed(self, element): log.info('on_negotiation_needed') promise = Gst.Promise.new_with_change_func(self.on_offer_created, element, None) @@ -68,8 +72,9 @@ class WebRTCClient: 'Type': 'addCalleeIceCandidate', 'Value': json.dumps({ "candidate": candidate, - "sdpMid": "0", + "sdpMid": f"{mlineindex}", "sdpMLineIndex": mlineindex, + "usernameFragment": self.userfragments[mlineindex], }) }) log.info(f'send_ice_candidate_message with {icemsg}')