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; })); }
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(); }
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); } }
public static void OnAppSuspending() { MediaDevices.OnAppSuspending(); }
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); }); }