- Dynamically set sdpMid, like browsers do.
- Send a usernameFragment, parsed from the sdp message.
self.ssl_context.verify_mode = ssl.CERT_NONE
self.websocket = None
self.session_id = None
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()
def send_sdp_offer(self, offer):
text = offer.sdp.as_text()
promise.interrupt()
self.send_sdp_offer(offer)
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)
def on_negotiation_needed(self, element):
log.info('on_negotiation_needed')
promise = Gst.Promise.new_with_change_func(self.on_offer_created, element, None)
'Type': 'addCalleeIceCandidate',
'Value': json.dumps({
"candidate": candidate,
'Type': 'addCalleeIceCandidate',
'Value': json.dumps({
"candidate": candidate,
+ "sdpMid": f"{mlineindex}",
"sdpMLineIndex": mlineindex,
"sdpMLineIndex": mlineindex,
+ "usernameFragment": self.userfragments[mlineindex],
})
})
log.info(f'send_ice_candidate_message with {icemsg}')
})
})
log.info(f'send_ice_candidate_message with {icemsg}')