private void InitMediaSettings() { screenCaptureDeviceDescr = new ScreenCaptureDevice { Resolution = new Size(1920, 1080), CaptureMouse = true, AspectRatio = true, CaptureType = VideoCaptureType.DXGIDeskDupl, UseHardware = true, Fps = 30, }; videoEncoderSettings = new VideoEncoderSettings { Resolution = new Size(1920, 1080), Encoder = VideoEncoderMode.H264, Profile = H264Profile.Main, BitrateMode = BitrateControlMode.CBR, Bitrate = 2500, MaxBitrate = 5000, FrameRate = 30, LowLatency = true, }; videoSettings = new VideoStreamSettings { Enabled = true, SessionId = "video_" + Guid.NewGuid().ToString(), NetworkParams = new NetworkSettings(), CaptureDescription = null, EncodingParams = videoEncoderSettings, }; audioEncoderSettings = new AudioEncoderSettings { SampleRate = 8000, Channels = 1, Encoding = "PCMU", }; audioSettings = new AudioStreamSettings { Enabled = true, SessionId = "audio_" + Guid.NewGuid().ToString(), NetworkParams = new NetworkSettings(), CaptureParams = new AudioCaptureSettings(), EncodingParams = audioEncoderSettings, }; }
private void SetupVideoStream(VideoStreamSettings settings) { logger.Debug("SetupVideoStream(...)"); try { videoStreamer = new VideoStreamer(videoSource); videoStreamer.Setup(settings.EncodingParams, settings.NetworkParams); } catch (Exception ex) { logger.Error(ex); if (videoStreamer != null) { videoStreamer.Close(); videoStreamer = null; } throw; } }
private void SetupVideoSource(VideoStreamSettings settings) { logger.Debug("SetupVideoSource(...)"); try { var captureDescr = settings.CaptureDescription; captureDescr.Resolution = videoSettings.EncodingParams.Resolution; if (captureDescr.CaptureMode == CaptureMode.CaptDevice) { videoSource = new VideoCaptureSource(); videoSource.Setup(captureDescr); } else if (captureDescr.CaptureMode == CaptureMode.Screen) { videoSource = new ScreenSource(); videoSource.Setup(captureDescr); } videoSource.CaptureStarted += VideoSource_CaptureStarted; videoSource.CaptureStopped += VideoSource_CaptureStopped; } catch (Exception ex) { logger.Error(ex); if (videoSource != null) { videoSource.CaptureStarted -= VideoSource_CaptureStarted; videoSource.CaptureStopped -= VideoSource_CaptureStopped; videoSource.Close(); videoSource = null; } throw; } }
private void SetVideoChannelInfo(VideoStreamSettings settings) { var videoEncoderPars = settings.EncodingParams; VideoChannelInfo videoInfo = new VideoChannelInfo { Id = settings.SessionId, VideoEncoder = videoEncoderPars.Encoder, Resolution = videoEncoderPars.Resolution, Bitrate = videoEncoderPars.Bitrate, Fps = videoEncoderPars.FrameRate, }; var address = settings.NetworkParams.RemoteAddr; var port = settings.NetworkParams.RemotePort; var _transportMode = settings.NetworkParams.TransportMode; if (_transportMode == TransportMode.Tcp) { address = settings.NetworkParams.LocalAddr; port = settings.NetworkParams.LocalPort; } ScreencastChannelInfo videoChannelInfo = new ScreencastChannelInfo { Address = address, //videoSettings.Address, Port = port, // videoSettings.Port, Transport = _transportMode, IsMulticast = isMulticastMode, MediaInfo = videoInfo, SSRC = settings.NetworkParams.SSRC, }; ScreencastChannelsInfos.Add(videoChannelInfo); }
public void Setup(VideoStreamSettings settingsParams) { logger.Debug("Setup(...)"); this.VideoSettings = settingsParams; var captureDevice = VideoSettings.CaptureDevice; if (captureDevice == null) { //... } LoadEncoderItems(); UpdateCaptureInfo(); var encoderSettings = VideoSettings.EncoderSettings; var encoderId = encoderSettings.EncoderId; var encoderItem = encoderItems.FirstOrDefault(e => e.Tag != null && ((VideoEncoderDescription)e.Tag).Id == encoderId); if (encoderItem == null) { encoderItem = encoderItems.FirstOrDefault(); } encoderComboBox.SelectedItem = encoderItem; this.encWidthNumeric.Maximum = maxWidth; this.encWidthNumeric.Minimum = minWidth; this.encHeightNumeric.Maximum = maxHeight; this.encHeightNumeric.Minimum = minHeight; if (captureDevice.CaptureMode == CaptureMode.Screen) { var screenCaptureDevice = (ScreenCaptureDevice)captureDevice; var captureProps = screenCaptureDevice.Properties; // var captureDescr = screenCaptureParams.CaptureDescription; displayTextBox.Text = screenCaptureDevice.Name; captureRegion = screenCaptureDevice.CaptureRegion; //captureMouseCheckBox.Checked = captureProps.CaptureMouse; aspectRatioCheckBox.Checked = captureProps.AspectRatio; //showDebugInfoCheckBox.Checked = captureProps.ShowDebugInfo; //showCaptureBorderCheckBox.Checked = captureProps.ShowDebugBorder; if (screenCaptureDevice.DisplayRegion.IsEmpty) { displayTextBox.Visible = false; labelDisplay.Visible = false; } cameraTableLayoutPanel.Visible = false; screenCaptureTableLayoutPanel.Visible = true; captureSettingsButton.Enabled = true; windowsCaptureTLPanel.Visible = false; //screenCaptureDetailsPanel.Visible = true; } else if (captureDevice.CaptureMode == CaptureMode.UvcDevice) { var uvcDevice = (UvcDevice)captureDevice; CaptureDeviceTextBox.Text = uvcDevice.Name; var profile = uvcDevice?.CurrentProfile; var frameSize = profile.FrameSize; var propsStr = frameSize.Width + "x" + frameSize.Height + ", " + profile.FrameRate + "fps" + ", " + profile.Format; var _profile = profile.Name + " (" + propsStr + ")"; uvcProfileInfotextBox.Text = _profile; //List<ComboBoxItem> profileItems = new List<ComboBoxItem> //{ // new ComboBoxItem // { // Name = profile?.ToString() ?? "", // Tag = profile, // }, //}; //CaptureDeviceProfilesComboBox.DataSource = profileItems; //CaptureDeviceProfilesComboBox.DisplayMember = "Name"; //CaptureDeviceProfilesComboBox.ValueMember = "Tag"; cameraTableLayoutPanel.Visible = true; screenCaptureTableLayoutPanel.Visible = false; //screenCaptureDetailsPanel.Visible = false; //captureSettingsButton.Enabled = false; windowsCaptureTLPanel.Visible = false; } else if (captureDevice.CaptureMode == CaptureMode.AppWindow) { cameraTableLayoutPanel.Visible = false; screenCaptureTableLayoutPanel.Visible = false; UpdateWindows(); windowsComboBox.DataSource = windowsItems; windowsComboBox.DisplayMember = "Name"; windowsComboBox.ValueMember = "Tag"; windowsComboBox.SelectedItem = windowsItems.FirstOrDefault(); windowsCaptureTLPanel.Visible = true; } var videoEncoderSettings = VideoSettings.EncoderSettings; var encoderResolution = videoEncoderSettings.Resolution; if (encoderResolution.Width <= encWidthNumeric.Maximum && encoderResolution.Width >= encWidthNumeric.Minimum) { this.encWidthNumeric.Value = encoderResolution.Width; } if (encoderResolution.Height <= encHeightNumeric.Maximum && encoderResolution.Height >= encHeightNumeric.Minimum) { this.encHeightNumeric.Value = encoderResolution.Height; } this.captureRegionTextBox.Text = captureRegion.ToString(); this.checkBoxResoulutionFromSource.Checked = VideoSettings.UseEncoderResoulutionFromSource; this.encoderComboBox.SelectedItem = videoEncoderSettings.EncoderFormat; //this.encProfileComboBox.SelectedItem = videoEncoderSettings.Profile; //this.bitrateModeComboBox.SelectedItem = videoEncoderSettings.BitrateMode; //this.MaxBitrateNumeric.Value = videoEncoderSettings.MaxBitrate; //this.bitrateNumeric.Value = videoEncoderSettings.Bitrate; //this.fpsNumeric.Value = videoEncoderSettings.FrameRate; //this.latencyModeCheckBox.Checked = videoEncoderSettings.LowLatency; }