コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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();
        }