Example #1
0
 public static void StartScreenCapturer()
 {
     ScreenCapturer.OnScreenUpdated += ScreenCapturer_OnScreenUpdated;
     ScreenCapturer.OnCaptureStop += ScreenCapturer_OnCaptureStop;
     ScreenCapturer.StartCapture();
     ScreenCapturer.SkipFirstFrame = true;
     System.Threading.Thread.Sleep(500);
 }
Example #2
0
        public async static Task MainAsync(int role, string addr, int port)
        {
            encoderParameters          = new EncoderParameters(1);
            encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, encodeQuality);
            imageCodecInfo             = GetEncoder(ImageFormat.Jpeg);

            VideoStreamer.role = role;
            udpSock            = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            divideRects = new Rectangle[divideWidth * divideHeight];
            int blockWidth  = width / divideWidth;
            int blockHeight = height / divideHeight;

            for (int x = 0; x < divideWidth; x++)
            {
                for (int y = 0; y < divideHeight; y++)
                {
                    int pos = y * divideWidth + x;
                    divideRects[pos] = new Rectangle(x * blockWidth, y * blockHeight, blockWidth, blockHeight);
                }
            }

            currImage     = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            currImageDraw = Graphics.FromImage(currImage);

            MainWindow.current.Dispatcher.Invoke(() =>
            {
                writeableBitmap = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null);
                MainWindow.current.VideoObject.Source = writeableBitmap;
            });

            if (role == 0)
            {
                udpSock.Bind(new IPEndPoint(IPAddress.Any, port));
                Thread rcv = new Thread(new ThreadStart(receiverThreadProcessor));
                rcv.IsBackground = false;
                rcv.Priority     = ThreadPriority.Highest;
                rcv.Start();
            }
            else
            {
                udpSock.Bind(new IPEndPoint(IPAddress.Any, 0));
                remote = new IPEndPoint(IPAddress.Parse(addr), port);
                ScreenCapturer.OnScreenUpdated += CapturedEvent;
                ScreenCapturer.StartCapture();
            }
            await Task.Delay(-1);
        }
Example #3
0
 private static void ScreenCapturer_OnCaptureStop(object sender, OnCaptureStopEventArgs e)
 {
     ScreenCapturer.StartCapture();
 }