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()
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)
'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}')
def start_pipeline(self):
self.webrtc = Gst.ElementFactory.make('webrtcbin', 'laplace')
+ # self.webrtc.set_property("bundle-policy", 3)
direction = GstWebRTC.WebRTCRTPTransceiverDirection.RECVONLY
- vcaps = Gst.caps_from_string("application/x-rtp,media=video,encoding-name=VP8/9000,payload=96")
- acaps = Gst.caps_from_string("application/x-rtp,media=audio,encoding-name=OPUS,media=audio,clock-rate=48000,payload=97")
- # vcaps.append(acaps)
- self.webrtc.emit('add-transceiver', direction, vcaps)
- self.webrtc.emit('add-transceiver', direction, acaps)
+ video_caps = Gst.caps_from_string("application/x-rtp,media=video,encoding-name=VP8/9000,payload=96")
+ audio_caps = Gst.caps_from_string("application/x-rtp,media=audio,encoding-name=OPUS,clock-rate=48000,payload=111")
+ self.webrtc.emit('add-transceiver', direction, video_caps)
+ self.webrtc.emit('add-transceiver', direction, audio_caps)
self.pipe = Gst.Pipeline.new("pipeline")
Gst.Bin.do_add_element(self.pipe, self.webrtc)
self.webrtc.connect('on-negotiation-needed', self.on_negotiation_needed)
if not check_plugins():
sys.exit(1)
parser = argparse.ArgumentParser()
- parser.add_argument('--uri', default='wss://localhost:2222/ws_connect?id=cug',
+ parser.add_argument('--uri', default='wss://localhost:1234/ws_connect?id=cug',
help='Signalling server URI')
args = parser.parse_args()
c = WebRTCClient(args.uri)