Exemplo n.º 1
0
        public void Close(bool force = false)
        {
            logger.Debug("VideoHttpStreamer::Close()");

            Stop();

            if (!force)
            {
                if (streamTask != null)
                {
                    if (streamTask.Status == TaskStatus.Running)
                    {
                        bool waitResult = false;
                        do
                        {
                            waitResult = streamTask.Wait(1000);
                            if (!waitResult)
                            {
                                logger.Warn("VideoHttpStreamer::Close() " + waitResult);
                            }
                        } while (!waitResult);
                    }
                }
            }

            screenSource.BufferUpdated -= ScreenSource_BufferUpdated;

            if (encoder != null)
            {
                encoder.DataEncoded -= Encoder_DataEncoded;
                encoder.Close();
            }

            state = MediaState.Closed;
        }
Exemplo n.º 2
0
        public void Setup(VideoEncoderSettings encPars, NetworkSettings networkParams)
        {
            logger.Debug("VideoHttpStreamer::Setup(...) "
                         + encPars.Resolution.Width + "x" + encPars.Resolution.Height + " " + encPars.EncoderId);

            if (State != MediaState.Closed)
            {
                throw new InvalidOperationException("Invalid state " + State);
            }

            try
            {
                this.networkParams = networkParams;

                httpStreamer = new Networks.HttpStreamer();

                encoder = new FFmpegVideoEncoder();
                encoder.Open(encPars);
                encoder.DataEncoded += Encoder_DataEncoded;

                state = MediaState.Initialized;
            }
            catch (Exception ex)
            {
                logger.Error(ex);

                errorCode = 100503;
                if (encoder != null)
                {
                    encoder.DataEncoded -= Encoder_DataEncoded;
                    encoder.Close();
                    encoder = null;
                }

                state = MediaState.Closed;
                throw;
            }
        }