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); }
/// <summary> /// 添加一个音源通道 /// </summary> /// <param name="channel">通道id</param> /// <param name="audio">音源</param> public static void AddAudioSource(int channel, AudioSource audio) { for (int i = 0; i < lac.Count; i++) { if (channel == lac[i].Channel) { lac[i].audios.Add(audio); return; } } AudioChannelInfo info = new AudioChannelInfo(); info.Channel = channel; info.audios.Add(audio); lac.Add(info); }
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(); }