Exemplo n.º 1
0
        public Task <IList <MediaStreamTrack> > GetUserMedia(RTCMediaStreamConstraints mediaStreamConstraints)
        {
            return(Task.Run(() =>
            {
                var constraints = Helper.MakeConstraints(mediaStreamConstraints.audioEnabled, null,
                                                         MediaDeviceKind.AudioInput, _audioCaptureDevice);
                constraints = Helper.MakeConstraints(mediaStreamConstraints.videoEnabled, constraints,
                                                     MediaDeviceKind.VideoInput, _videoDevice);
                if (constraints.Video != null && constraints.Video.Advanced.Count > 0)
                {
                    MediaTrackConstraintSet constraintSet = constraints.Video.Advanced.First();
                    constraintSet.Width = new ConstrainLong {
                        Value = _preferredFrameWidth
                    };
                    constraintSet.Height = new ConstrainLong {
                        Value = _preferredFrameHeight
                    };
                    constraintSet.FrameRate = new ConstrainDouble {
                        Value = _preferredFPS
                    };
                }

                Task <IList <MediaStreamTrack> > task = MediaDevices.GetUserMedia(constraints).AsTask();
                return task.Result;
            }));
        }
Exemplo n.º 2
0
        public async Task InitializeAsync()
        {
            var callStatus = await _callChannel.GetCallStatusAsync();

            if (callStatus != null)
            {
                await CallStatusUpdate(callStatus);
            }

            if (CallState != CallState.Idle)
            {
                FrameFormat localFrameFormat = await _callChannel.GetFrameFormatAsync(true);

                if (localFrameFormat != null)
                {
                    OnFrameFormatUpdate(localFrameFormat);
                }

                FrameFormat remoteFrameFormat = await _callChannel.GetFrameFormatAsync(false);

                if (remoteFrameFormat != null)
                {
                    OnFrameFormatUpdate(remoteFrameFormat);
                }
            }

            // Get stored relay messages
            OnRelayMessagesUpdated();

            _cameras = await _settingsChannel.GetVideoCaptureDevicesAsync();
        }
Exemplo n.º 3
0
        private void EnumerateDevices()
        {
            try
            {
                var asyncOp = MediaDevices.EnumerateDevices();

                asyncOp.Completed = (op, state) =>
                {
                    try
                    {
                        var devices = op.GetResults();
                        int i       = 0;
                        foreach (var deviceInfo in devices)
                        {
                            i++;
                            string str = "Device " + i + ":" + deviceInfo.Label;
                            listView.Items.Add(str);
                        }
                    }
                    catch (Exception e)
                    {
                        string str = "Obtaining results of the enumeration has failed.";
                        listView.Items.Add(str);
                    }
                };
            }
            catch (Exception e)
            {
                string str = "Device enumeration has failed.";
                listView.Items.Add(str);
            }
        }
Exemplo n.º 4
0
 public static void OnAppSuspending()
 {
     MediaDevices.OnAppSuspending();
 }
Exemplo n.º 5
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            RTCIceGatherOptions options = new RTCIceGatherOptions();
            RTCIceServer        server  = new RTCIceServer();

            server.UserName   = "******";
            server.Credential = "12345";
            server.Urls       = new List <String>();
            server.Urls.Add("stun:stun.vline.com");
            options.IceServers = new List <RTCIceServer>();
            options.IceServers.Add(server);

            _iceGatherer = new RTCIceGatherer(options);
            _iceGatherer.OnStateChange            += this.RTCIceGatherer_onICEGathererStateChanged;
            _iceGatherer.OnLocalCandidate         += this.RTCIceGatherer_onICEGathererLocalCandidate;
            _iceGatherer.OnLocalCandidateComplete += this.RTCIceGatherer_onICEGathererCandidateComplete;
            _iceGatherer.OnLocalCandidateGone     += this.RTCIceGatherer_onICEGathererLocalCandidateGone;
            _iceGatherer.OnError += this.RTCIceGatherer_onICEGathererError;


            _iceGatherer2 = new RTCIceGatherer(options);
            _iceGatherer2.OnStateChange            += this.RTCIceGatherer_onICEGathererStateChanged2;
            _iceGatherer2.OnLocalCandidate         += this.RTCIceGatherer_onICEGathererLocalCandidate2;
            _iceGatherer2.OnLocalCandidateComplete += this.RTCIceGatherer_onICEGathererCandidateComplete2;
            _iceGatherer2.OnLocalCandidateGone     += this.RTCIceGatherer_onICEGathererLocalCandidateGone2;
            _iceGatherer2.OnError += this.RTCIceGatherer_onICEGathererError;

            _iceTransport = new RTCIceTransport(_iceGatherer);
            _iceTransport.OnStateChange            += RTCIceTransport_onICETransportStateChanged;
            _iceTransport.OnCandidatePairAvailable += RTCIceTransport_onICETransportCandidatePairAvailable;
            _iceTransport.OnCandidatePairGone      += RTCIceTransport_onICETransportCandidatePairGone;
            _iceTransport.OnCandidatePairChange    += RTCIceTransport_onICETransportCandidatePairChanged;

            _iceTransport2 = new RTCIceTransport(_iceGatherer);
            _iceTransport2.OnStateChange            += RTCIceTransport_onICETransportStateChanged2;
            _iceTransport2.OnCandidatePairAvailable += RTCIceTransport_onICETransportCandidatePairAvailable2;
            _iceTransport2.OnCandidatePairGone      += RTCIceTransport_onICETransportCandidatePairGone2;
            _iceTransport2.OnCandidatePairChange    += RTCIceTransport_onICETransportCandidatePairChanged2;

            RTCCertificate.GenerateCertificate().AsTask <RTCCertificate>().ContinueWith((cert) =>
            {
                String str = cert.Result.Expires.ToString();
                List <RTCCertificate> certs = new List <RTCCertificate>();
                certs.Add(cert.Result);
                _dtlsTransport = new RTCDtlsTransport(_iceTransport, certs);
                MediaStreamConstraints constraints = new MediaStreamConstraints();

                constraints.Audio = new MediaTrackConstraints();
                constraints.Video = new MediaTrackConstraints();

                MediaDevices.GetUserMedia(constraints).AsTask().ContinueWith <IList <MediaStreamTrack> >((temp) =>
                {
                    if (temp.Result != null && temp.Result.Count() > 0)
                    {
                        List <MediaStreamTrack> ret = new List <MediaStreamTrack>(temp.Result);
                        List <RTCRtpSender> senders = new List <RTCRtpSender>();
                        foreach (MediaStreamTrack track in temp.Result)
                        {
                            RTCRtpSender rtpSender = new RTCRtpSender(track, _dtlsTransport);
                            senders.Add(rtpSender);
                        }

                        return(ret);
                    }

                    return(null);
                });
            });

            RTCCertificate.GenerateCertificate().AsTask <RTCCertificate>().ContinueWith((cert) =>
            {
                var certs = new List <RTCCertificate>();
                certs.Add(cert.Result);
                _dtlsTransport2 = new RTCDtlsTransport(_iceTransport2, certs);
            });

            MediaDevices.EnumerateDevices().AsTask().ContinueWith <MediaDeviceInfo>((temp) =>
            {
                foreach (MediaDeviceInfo info in temp.Result)
                {
                    if (info.DeviceId != null)
                    {
                        System.Diagnostics.Debug.WriteLine("DeviceID: {0}", info.DeviceId);
                    }
                }
                return(null);
            });
        }