bool isSending = false; private void CaptureDone(System.Drawing.Bitmap e) { try { this.ClientCam.Image = e; if (isSending) ThreadPool.QueueUserWorkItem(new WaitCallback(SendVideo), ClientCam.Image); } catch (Exception) { } } private void Call_Button_Click(object sender, EventArgs e) { turnCamOffToolStripMenuItem.Enabled = false; turnCamOnToolStripMenuItem.Enabled = false; try { DirectX.Capture.Filters filter = new DirectX.Capture.Filters(); capt = new DirectX.Capture.Capture(filter.VideoInputDevices[0], filter.AudioInputDevices[0]); if (capt != null) { capt.PreviewWindow = ClientCam; Call_Button.Enabled = false; } capt.FrameEvent2 +=new DirectX.Capture.Capture.HeFrame(CaptureDone); capt.GrapImg(); isSending = true; thread1 = new Thread(new ThreadStart(ReceiveVideo)); thread1.Start(); } catch (Exception) { MessageBox.Show("Device is not accessible"); } } public void SendVideo(object bufferIn) { try { TcpClient cll = new TcpClient(IP_Address.Text, 5000); NetworkStream strm = cll.GetStream(); Image buff = (Image)ClientCam.Image; buff.Save(strm, System.Drawing.Imaging.ImageFormat.Jpeg); strm.Close(); cll.Close(); } catch (Exception) { } } public void ReceiveVideo() { try { skt = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); skt.Bind(new IPEndPoint(IPAddress.Any, 6000)); skt.Listen(1); while (true) { try { Socket server_sock = skt.Accept(); NetworkStream Nstream = new NetworkStream(server_sock); ServerCam.Image = Image.FromStream(Nstream); Nstream.Close(); server_sock.Close(); } catch(Exception) { } } } catch (Exception) { } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)