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 SetupAudio(ScreencastChannelInfo audioChannelInfo) { tracer.Verb("ScreenCastControl::SetupAudio(...)"); //logger.Debug("SetupAudio(...)"); var audioInfo = audioChannelInfo.MediaInfo as AudioChannelInfo; if (audioInfo == null) { return; } var audioAddr = audioChannelInfo.Address; if (audioChannelInfo.Transport == TransportMode.Tcp) { audioAddr = ServerAddr; } var audioPort = audioChannelInfo.Port; AudioReceiver = new AudioReceiver(); var networkPars = new NetworkSettings { LocalAddr = audioAddr, LocalPort = audioPort, TransportMode = audioChannelInfo.Transport, SSRC = audioChannelInfo.SSRC, }; var audioDeviceId = ""; try { var devices = NAudio.Wave.DirectSoundOut.Devices; var device = devices.FirstOrDefault(); audioDeviceId = device?.Guid.ToString() ?? ""; } catch (Exception ex) { tracer.Error(ex); //logger.Error(ex); } var audioPars = new AudioEncoderSettings { SampleRate = audioInfo.SampleRate, Channels = audioInfo.Channels, Encoding = "ulaw", DeviceId = audioDeviceId, }; AudioReceiver.Setup(audioPars, networkPars); }
private void SetupVideo(ScreencastChannelInfo videoChannelInfo) { logger.Verb("ScreenCastControl::SetupVideo(...)"); //logger.Debug("SetupVideo(...)"); var videoInfo = videoChannelInfo.MediaInfo as VideoChannelInfo; if (videoInfo == null) { return; } var videoAddr = videoChannelInfo.Address; if (videoChannelInfo.Transport == TransportMode.Tcp) { videoAddr = ServerAddr; } var videoPort = videoChannelInfo.Port; var encoderSettings = new VideoEncoderSettings { //Resolution = videoInfo.Resolution, Width = videoInfo.Resolution.Width, Height = videoInfo.Resolution.Height, FrameRate = new MediaRatio(videoInfo.Fps, 1), }; var networkSettings = new NetworkSettings { LocalAddr = videoAddr, LocalPort = videoPort, TransportMode = videoChannelInfo.Transport, SSRC = videoChannelInfo.SSRC, }; VideoReceiver = new VideoReceiverEx(); VideoReceiver.DataReceived += VideoReceiver_DataReceived; VideoReceiver.Setup(networkSettings); videoRendererSink = new D3D9RendererSink(); encoderSettings.LowLatency = true; encoderSettings.UseHardware = true; videoRendererSink.Setup(encoderSettings, VideoHandle); }
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 ScreencastChannelInfo[] GetScreencastInfo() { var channels = new List <ScreencastChannelInfo>(); if (videoStreamer != null) { //if(videoStreamer.State== StreamerState.Streaming) { var networkSettings = videoStreamer.NetworkSettings; var encoderSettings = videoStreamer.EncoderSettings; VideoChannelInfo videoInfo = new VideoChannelInfo { Id = videoStreamer.Id, VideoEncoder = encoderSettings.EncoderFormat, Resolution = encoderSettings.Resolution, Bitrate = encoderSettings.Bitrate, Fps = (int)encoderSettings.FramePerSec, //encoderSettings.FrameRate.Num, }; var address = networkSettings.RemoteAddr; var port = networkSettings.RemotePort; var _transportMode = networkSettings.TransportMode; if (_transportMode == TransportMode.Tcp) { address = networkSettings.LocalAddr; port = networkSettings.LocalPort; } ScreencastChannelInfo videoChannelInfo = new ScreencastChannelInfo { Address = address, //videoSettings.Address, Port = port, // videoSettings.Port, Transport = _transportMode, IsMulticast = Session.IsMulticast, MediaInfo = videoInfo, SSRC = networkSettings.SSRC, ClientsCount = videoStreamer.ClientsCount, }; channels.Add(videoChannelInfo); } } if (audioStreamer != null) { //if (audioStreamer.IsStreaming) { var networkSettings = audioStreamer.NetworkSettings; var encoderSettings = audioStreamer.EncoderSettings; AudioChannelInfo audioInfo = new AudioChannelInfo { Id = audioStreamer.Id, AudioEncoder = encoderSettings.Encoder, SampleRate = encoderSettings.SampleRate, Channels = encoderSettings.Channels, }; var address = networkSettings.RemoteAddr; var port = networkSettings.RemotePort; var _transportMode = networkSettings.TransportMode; if (_transportMode == TransportMode.Tcp) { address = networkSettings.LocalAddr; port = networkSettings.LocalPort; } ScreencastChannelInfo audioChannelInfo = new ScreencastChannelInfo { Address = address, Port = port, IsMulticast = Session.IsMulticast, Transport = _transportMode, MediaInfo = audioInfo, SSRC = networkSettings.SSRC, ClientsCount = audioStreamer.ClientsCount }; channels.Add(audioChannelInfo); } } return(channels.ToArray()); //var vci = ScreencastChannelsInfos.FirstOrDefault(i => i.MediaInfo is VideoChannelInfo); //if (vci != null) //{ // vci.ClientsCount = videoStreamer?.ClientsCount ?? 0; //} //var aci = ScreencastChannelsInfos.FirstOrDefault(i => i.MediaInfo is AudioChannelInfo); //if (aci != null) //{ // aci.ClientsCount = audioStreamer?.ClientsCount ?? 0; //} //return ScreencastChannelsInfos?.ToArray(); }
private void SetupVideo(ScreencastChannelInfo videoChannelInfo) { tracer.Verb("ScreenCastControl::SetupVideo(...)"); //logger.Debug("SetupVideo(...)"); var videoInfo = videoChannelInfo.MediaInfo as VideoChannelInfo; if (videoInfo == null) { return; } var videoAddr = videoChannelInfo.Address; if (videoChannelInfo.Transport == TransportMode.Tcp) { videoAddr = ServerAddr; } var videoPort = videoChannelInfo.Port; var inputPars = new VideoEncoderSettings { //Resolution = videoInfo.Resolution, Width = videoInfo.Resolution.Width, Height = videoInfo.Resolution.Height, FrameRate = new MediaRatio(videoInfo.Fps, 1), }; var outputPars = new VideoEncoderSettings { //Resolution = videoInfo.Resolution, Width = videoInfo.Resolution.Width, Height = videoInfo.Resolution.Height, //AspectRatio = new MediaRatio(1, 1), //Resolution = new System.Drawing.Size(1920, 1080); FrameRate = new MediaRatio(videoInfo.Fps, 1), }; var networkPars = new NetworkSettings { LocalAddr = videoAddr, LocalPort = videoPort, TransportMode = videoChannelInfo.Transport, SSRC = videoChannelInfo.SSRC, }; VideoReceiver = new VideoReceiver(); VideoReceiver.UpdateBuffer += VideoReceiver_UpdateBuffer; VideoReceiver.Setup(inputPars, outputPars, networkPars); d3dProvider = new D3D11RendererProvider(); d3dProvider.Init(VideoReceiver.sharedTexture); //d3dRenderer.Setup(VideoReceiver.sharedTexture); }