Example #1
0
        /// <summary>
        /// Initial WebRtc Component
        /// </summary>
        protected void RtcInitial()
        {
            try
            {
                WebRtcNative.InitializeSSL();
                ServerUrls.GetStunUrls().ForEach(url =>
                {
                    // Set Stun Servers
                    _WebRtc.AddServerConfig(url, string.Empty, string.Empty);
                });

                // Get audio control
                _WebRtc.SetAudio(true);
                _WebRtc.OpenVideoCaptureDevice("");
                // Set Video Capturer
                {
                    IVedioCaptureInfo cptr = new ScreenCaptureInfo();
                    _WebRtc.SetVideoCapturer(cptr.Width, cptr.Height, cptr.CaptureFps);
                }
                // Relative Connection callback
                {
                    // Be triggered On Success to generate Offer
                    _WebRtc.OnSuccessOffer += (sdp) =>
                    {
                        OfferSpdMsg msg = new OfferSpdMsg
                        {
                            Command = SocketMessage.OfferSpd,
                            SDP     = sdp
                        };
                        _SocketClient.Send(JsonConvert.SerializeObject(msg));
                    };

                    // Be triggered On Success to generate ICE
                    _WebRtc.OnIceCandidate += (sdp_mid, sdp_mline_index, sdp) =>
                    {
                        IceCandidateMsg msg = new IceCandidateMsg
                        {
                            Command       = SocketMessage.OnIceCandidate,
                            SDP           = sdp,
                            SdpMid        = sdp_mid,
                            SdpMlineIndex = sdp_mline_index,
                        };
                        _SocketClient.Send(JsonConvert.SerializeObject(msg));
                    };

                    // Be triggered On OfferRequest
                    _WebRtc.OnSuccessAnswer += (sdp) =>
                    {
                        SuccessAnswerMsg msg = new SuccessAnswerMsg
                        {
                            Command = SocketMessage.OnSuccessAnswer,
                            SDP     = sdp
                        };
                        _SocketClient.Send(JsonConvert.SerializeObject(msg));
                    };
                }
                // Set Local and Remote callback
                {
                    _WebRtc.OnRenderLocal  += _OnRenderLocalCallback;
                    _WebRtc.OnRenderRemote += _OnRenderRemoteCallback;
                }
                // Set Other callback
                {
                    _WebRtc.OnSuccessAnswer     += (sdp) => { Debug.WriteLine($"Success Get SDP:{sdp}"); };
                    _WebRtc.OnFailure           += (failure) => { Debug.WriteLine($"Failure Msg:{failure}"); };
                    _WebRtc.OnError             += (error) => { Debug.WriteLine($"Error Msg:{error}"); };
                    _WebRtc.OnDataMessage       += (dmsg) => { Debug.WriteLine($"OnDataMessage: {dmsg}"); };
                    _WebRtc.OnDataBinaryMessage += (dmsg) => { Debug.WriteLine($"OnDataBinaryMessage: {dmsg.Length}"); };
                }
            }
            catch (Exception ex) { }
        }