コード例 #1
0
ファイル: CaptureTests.cs プロジェクト: yashodhank/Remotely
        public async Task Capture()
        {
            var capturer = new ScreenCapturerWin();

            capturer.GetNextFrame();
            Process.Start("msg", "* test");
            await Task.Delay(500);

            capturer.GetNextFrame();
            var diffArea = ImageUtils.GetDiffArea(capturer.CurrentFrame, capturer.PreviousFrame, false);

            if (diffArea.IsEmpty)
            {
                return;
            }
            using (var newImage = capturer.CurrentFrame.Clone(diffArea, PixelFormat.Format32bppArgb))
            {
                if (capturer.CaptureFullscreen)
                {
                    capturer.CaptureFullscreen = false;
                }

                newImage.Save(Path.Combine(Path.GetTempPath(), "!ImageDiff.jpg"), ImageFormat.Jpeg);
                capturer.CurrentFrame.Save(Path.Combine(Path.GetTempPath(), "!Current.jpg"), ImageFormat.Jpeg);
                capturer.PreviousFrame.Save(Path.Combine(Path.GetTempPath(), "!Previous.jpg"), ImageFormat.Jpeg);
            }
        }
コード例 #2
0
        public void Init()
        {
            _conductor        = new Conductor();
            _cursorWatcher    = new Mock <ICursorIconWatcher>();
            _sessionIndicator = new Mock <ISessionIndicator>();
            _clipboard        = new Mock <IClipboardService>();
            _webrtcFactory    = new Mock <IWebRtcSessionFactory>();
            _casterSocket     = new Mock <ICasterSocket>();
            _audio            = new Mock <IAudioCapturer>();
            _shutdown         = new Mock <IShutdownService>();
            _capturer         = new ScreenCapturerWin();
            _screenCaster     = new ScreenCaster(_conductor, _cursorWatcher.Object, _sessionIndicator.Object, _shutdown.Object);
            _viewer           = new Viewer(_casterSocket.Object, _capturer, _clipboard.Object, _webrtcFactory.Object, _audio.Object);

            _casterSocket
            .Setup(x => x.SendDtoToViewer(It.IsAny <CaptureFrameDto>(), It.IsAny <string>()))
            .Callback((CaptureFrameDto dto, string viewerId) => {
                _bytesSent += dto.ImageBytes.Length;
            });

            _casterSocket
            .Setup(x => x.SendDtoToViewer(It.Is <CaptureFrameDto>(x => x.EndOfFrame), It.IsAny <string>()))
            .Callback(() => {
                Task.Run(() =>
                {
                    Thread.Sleep(RoundtripLatency);
                    _viewer.PendingSentFrames.TryDequeue(out _);
                });
            });

            _casterSocket
            .Setup(x => x.IsConnected)
            .Returns(true)
            .Callback(() => _frameCount++);

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddLogging(builder =>
            {
                builder.AddConsole().AddDebug().AddEventLog();
            });

            serviceCollection.AddSingleton((e) => _viewer);

            ServiceContainer.Instance = serviceCollection.BuildServiceProvider();
        }