Пример #1
0
 public void ChangeVideoCfg(VideoEncodeCfg vCfg)
 {
     try
     {
         _vCfg = vCfg;
         if (_ce != null)
         {
             _ce.Error -= OnError;
             _ce.Stop();
             _ce.Dispose();
             _ce = null;
         }
         if (_vCfg.Params.ContainsKey("ScreenEncode") && (int)_vCfg.Params["ScreenEncode"] == 1)
         {
             _ce = new ScreenaEncoder(_vCfg, OnCaptured);
         }
         else
         {
             _ce = new CameraEncoder(_vCfg, OnCaptured);
         }
         _ce.Error += OnError;
         if (_isRuning)
         {
             if (IsVideoPub)
             {
                 _ce.Start();
             }
         }
     }
     catch (Exception e)
     {
         OnError(e);
         Stop();
     }
 }
Пример #2
0
 public MediaCapturer(VideoEncodeCfg cfgVideo, AudioEncodeCfg cfgAudio)
 {
     IsVideoPub = true;
     IsAudioPub = true;
     _vCfg      = cfgVideo;
     _aCfg      = cfgAudio;
     Init();
 }
Пример #3
0
        public static MediaFrame CreateVideoKeyFrame(VideoEncodeCfg cfg, long timetick, byte[] data, int offset, int size)
        {
            var mFrame = CreateVideoFrame(cfg, timetick, data, offset, size);

            mFrame.MediaFrameVersion = 1;
            mFrame.IsKeyFrame        = 1;
            mFrame.Width             = cfg.Width;
            mFrame.Height            = cfg.Height;
            mFrame.SPSLen            = cfg.GetSPS() == null ? 0 : cfg.GetSPS().Length;
            mFrame.PPSLen            = cfg.GetPPS() == null ? 0 : cfg.GetPPS().Length;
            mFrame.Encoder           = cfg.encoder;
            return(mFrame);
        }
Пример #4
0
        public static MediaFrame CreateVideoFrame(VideoEncodeCfg cfg, long timetick, byte[] data, int offset, int size)
        {
            if (cfg is null)
            {
                throw new ArgumentNullException(nameof(cfg));
            }

            var mFrame = new MediaFrame(0)
            {
                IsAudio    = 0,
                IsKeyFrame = 0,
                NTimetick  = timetick,
                Size       = size,
                Offset     = offset,
            };

            mFrame.SetData(data);

            return(mFrame);
        }
Пример #5
0
        public void ChangeCfg(VideoEncodeCfg vCfg, AudioEncodeCfg aCfg)
        {
            try
            {
                _vCfg = vCfg;
                _aCfg = aCfg;

                if (_ce != null)
                {
                    _ce.Error -= OnError;
                    _ce.Stop();
                    _ce.Dispose();
                    _ce = null;
                }
                if (_me != null)
                {
                    _me.Error -= OnError;
                    _me.Stop();
                    _me.Dispose();
                    _me = null;
                }
                Init();

                if (_isRuning)
                {
                    if (IsVideoPub)
                    {
                        _ce.Start();
                    }
                    if (IsAudioPub)
                    {
                        _me.Start();
                    }
                }
            }
            catch (Exception e)
            {
                OnError(e);
                Stop();
            }
        }