/// <summary> /// Initialize video device. /// </summary> /// <param name="videoDeviceSourceId">Video device source Id.</param> /// <exception cref="InvalidOperationException">Throws invalid operation exception if video device source setup fails.</exception> private void InitializeVideoDevice(string videoDeviceSourceId) { if (this.isVideoSourceInitialized) { return; } var errorAction = new Action(() => this.SetVideoPlayer(false, "Unable to set video device source")); this.ReleaseVideoDevice(); if (string.IsNullOrEmpty(videoDeviceSourceId)) { return; } if (videoDeviceSourceId.StartsWith("Message:", StringComparison.OrdinalIgnoreCase)) { var splitString = videoDeviceSourceId.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (splitString.Length == 2) { this.SetVideoPlayer(false, splitString[1]); } else { this.SetVideoPlayer(false); } } else { try { if (!GetVideoDevices.Any(item => item.UsbId.Equals(videoDeviceSourceId))) { return; } this.videoCaptureDevice = new VideoCaptureDevice(videoDeviceSourceId); this.VideoSourcePlayer.VideoSource = this.videoCaptureDevice; var test = this.videoCaptureDevice.VideoCapabilities.Select(it => it.FrameSize).Distinct(); this.VideoSourcePlayer.Start(); this.isVideoSourceInitialized = true; this.SetVideoPlayer(true); } catch (ArgumentNullException) { errorAction(); } catch (ArgumentException) { errorAction(); } } }
/// <summary> /// Initialize video device. /// </summary> /// <param name="videoDeviceSourceId">Video device source Id.</param> /// <exception cref="InvalidOperationException">Throws invalid operation exception if video device source setup fails.</exception> private void InitializeVideoDevice(string videoDeviceSourceId) { if (this.isVideoSourceInitialized) { return; } var errorAction = new Action(() => this.SetVideoPlayer(false, "Unable to set video device source")); this.ReleaseVideoDevice(); if (string.IsNullOrEmpty(videoDeviceSourceId)) { return; } if (videoDeviceSourceId.StartsWith("Message:", StringComparison.OrdinalIgnoreCase)) { var splitString = videoDeviceSourceId.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries); if (splitString.Length == 2) { this.SetVideoPlayer(false, splitString[1]); } else { this.SetVideoPlayer(false); } } else { try { if (!GetVideoDevices.Any(item => item.UsbId.Equals(videoDeviceSourceId))) { return; } this.videoCaptureDevice = new VideoCaptureDevice(videoDeviceSourceId); videoCaptureDevice.NewFrame += NewFrameHandler; var setting = this.videoCaptureDevice.VideoCapabilities.MaxBy(f => f.FrameSize.Height); videoCaptureDevice.VideoResolution = setting; videoCaptureDevice.SnapshotResolution = setting; var ratio = (double)setting.FrameSize.Width / (double)setting.FrameSize.Height; VideoPreviewHeight = 550; VideoPreviewWidth = (double)VideoPreviewHeight * ratio; videoCaptureDevice.Start(); //this.VideoSourcePlayer.VideoSource = this.videoCaptureDevice; //this.VideoSourcePlayer.Start(); this.isVideoSourceInitialized = true; this.SetVideoPlayer(true); } catch (ArgumentNullException) { errorAction(); } catch (ArgumentException) { errorAction(); } } }