private void SetupAudioStream(AudioStreamSettings settings) { logger.Debug("StartAudioStream(...)"); if (audioStreamer != null) { audioStreamer.StateChanged -= AudioStreamer_StateChanged; } try { audioStreamer = new AudioStreamer(audioSource); audioStreamer.Setup(audioSettings.EncodingParams, audioSettings.NetworkParams); audioStreamer.StateChanged += AudioStreamer_StateChanged; } catch (Exception ex) { logger.Error(ex); if (audioStreamer != null) { audioStreamer.Close(); audioStreamer.StateChanged -= AudioStreamer_StateChanged; audioStreamer = null; } throw; } }
private void SetAudioChannelInfo(AudioStreamSettings settings) { AudioChannelInfo audioInfo = new AudioChannelInfo { Id = settings.SessionId, AudioEncoder = settings.EncodingParams.Encoder, SampleRate = settings.EncodingParams.SampleRate, Channels = settings.EncodingParams.Channels, }; 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 audioChannelInfo = new ScreencastChannelInfo { Address = address, Port = port, IsMulticast = isMulticastMode, Transport = _transportMode, MediaInfo = audioInfo, SSRC = settings.NetworkParams.SSRC, }; ScreencastChannelsInfos.Add(audioChannelInfo); }
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, }; }
public void Setup(AudioStreamSettings audioSettings) { this.AudioSettings = audioSettings; var captureDevice = AudioSettings.CaptureDevice; textBoxDevice.Text = captureDevice.Name; this.captFormatTextBox.Text = captureDevice.Description; //this.addressTextBox.Text = AudioSettings.Address; //this.portNumeric.Value = AudioSettings.Port; //this.transportComboBox.SelectedItem = AudioSettings.TransportMode; var encoder = AudioSettings.EncoderSettings; this.sampleRateNumeric.Value = encoder.SampleRate; this.channelsNumeric.Value = encoder.Channels; }
private void SetupAudioSource(AudioStreamSettings settings) { logger.Debug("SetupAudioSource(...)"); try { audioSource = new AudioSource(); var deviceId = settings.CaptureParams.DeviceId; var eventSyncMode = true; var audioBufferMilliseconds = 50; var exclusiveMode = false; audioSource.Setup(deviceId, eventSyncMode, audioBufferMilliseconds, exclusiveMode); } catch (Exception ex) { logger.Error(ex); if (audioSource != null) { audioSource.Close(); audioSource = null; } throw; } }