Пример #1
0
        private void StartConsumerThread()
        {
            if (!IsWorking)
            {
                IsWorking = true;

                Helpers.CreateDirectoryIfNotExist(OutputPath);

                AVIWriter aviWriter = new AVIWriter(OutputPath, FPS, Size.Width, Size.Height, ShowOptions);

                task = TaskEx.Run(() =>
                {
                    try
                    {
                        position = 0;

                        while (!imageQueue.IsCompleted)
                        {
                            Image img = null;

                            try
                            {
                                img = imageQueue.Take();

                                if (img != null)
                                {
                                    //img.Save("Test\\" + position + ".bmp", ImageFormat.Bmp);
                                    aviWriter.AddFrame((Bitmap)img);
                                    position++;
                                }
                            }
                            catch (InvalidOperationException)
                            {
                            }
                            finally
                            {
                                if (img != null)
                                {
                                    img.Dispose();
                                }
                            }
                        }
                    }
                    finally
                    {
                        IsWorking = false;

                        if (aviWriter != null)
                        {
                            aviWriter.Dispose();
                        }
                    }
                });
            }
        }
Пример #2
0
        public AVICache(string outputPath, int fps, Size size, bool showOptions = false)
        {
            OutputPath  = outputPath;
            FPS         = fps;
            Size        = size;
            ShowOptions = showOptions;

            Helpers.CreateDirectoryIfNotExist(OutputPath);
            aviWriter  = new AVIWriter(OutputPath, FPS, Size.Width, Size.Height, ShowOptions);
            imageQueue = new BlockingCollection <Image>();
        }
Пример #3
0
 public AVICache(ScreencastOptions options)
 {
     Options = options;
     Helpers.CreateDirectoryIfNotExist(Options.OutputPath);
     aviWriter = new AVIWriter(options);
 }