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,
            };
        }
Exemple #4
0
        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;
            }
        }