基本信息
源码名称:调用基本本摄像头进行拍照、视频
源码大小:0.08M
文件格式:.zip
开发语言:C#
更新时间:2018-11-28
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data;
using Voice;
using VedioCapture;
namespace Conference_System
{
public partial class Form1 : Form
{
private ClassVedioCapture VC = new ClassVedioCapture();
private WaveOutPlayer m_Player;
private WaveInRecorder m_Recorder;
private FifoStream m_Fifo = new FifoStream();
private Socket r;
private Thread t;
private bool connected = false;
private byte[] m_PlayBuffer;
private byte[] m_RecBuffer;
TcpClient myclient;
MemoryStream ms;
NetworkStream myns;
BinaryWriter mysw;
Thread myth;
TcpListener mytcpl;
Socket mysocket;
NetworkStream ns;
public Form1()
{
InitializeComponent();
VC.Initialize(this.pictureBox1, this.pictureBox1.Width, this.pictureBox1.Height);
myth = new Thread(new System.Threading.ThreadStart(Start_Receiving_Video_Conference)); // Start Thread Session
myth.Start(); // Start Receiveing Camera
r = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
t = new Thread(new ThreadStart(Voice_In));
}
#region Voice_In()
private void Voice_In()
{
byte[] br;
r.Bind(new IPEndPoint(IPAddress.Any, 9001));
while (true)
{
br = new byte[16384];
r.Receive(br);
m_Fifo.Write(br, 0, br.Length);
}
}
#endregion
#region Voice_Out()
private void Voice_Out(IntPtr data, int size)
{
//for Recorder
if (m_RecBuffer == null || m_RecBuffer.Length < size)
m_RecBuffer = new byte[size];
System.Runtime.InteropServices.Marshal.Copy(data, m_RecBuffer, 0, size);
//Microphone ==> data ==> m_RecBuffer ==> m_Fifo
r.SendTo(m_RecBuffer, new IPEndPoint(IPAddress.Parse("192.168.31.101"), 9000));
}
#endregion
private void Start_Receiving_Video_Conference()
{
try
{
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ip = host.AddressList[1];
// Open The Port
mytcpl = new TcpListener(8000);
mytcpl.Start(); // Start Listening on That Port
mysocket = mytcpl.AcceptSocket(); // Accept Any Request From Client and Start a Session
ns = new NetworkStream(mysocket); // Receives The Binary Data From Port
pictureBox2.Image = Image.FromStream(ns);
mytcpl.Stop(); // Close TCP Session
if (mysocket.Connected == true) // Looping While Connected to Receive Another Message
{
while (true)
{
Start_Receiving_Video_Conference(); // Back to First Method
}
}
myns.Flush();
}
catch (Exception) { }
}
private void Start_Sending_Video_Conference(string remote_IP, int port_number)
{
try
{
ms = new MemoryStream();// Store it in Binary Array as Stream
VC.CopyToClipBorad();
Image img = VC.getCaptureImage();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arrImage = ms.GetBuffer();
myclient = new TcpClient(remote_IP, port_number);//Connecting with server
myns = myclient.GetStream();
mysw = new BinaryWriter(myns);
mysw.Write(arrImage);//send the stream to above address
ms.Flush();
mysw.Flush();
myns.Flush();
ms.Close();
mysw.Close();
myns.Close();
myclient.Close();
}
catch (Exception ex)
{
Capturing.Enabled = false;
MessageBox.Show(ex.Message, "Video Conference Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void Start()
{
Stop();
try
{
WaveFormat fmt = new WaveFormat(44100, 16, 2);
m_Player = new WaveOutPlayer(-1, fmt, 16384, 3, new BufferFillEventHandler(Filler));
m_Recorder = new WaveInRecorder(-1, fmt, 16384, 3, new BufferDoneEventHandler(Voice_Out));
}
catch
{
Stop();
throw;
}
}
private void Stop()
{
if (m_Player != null)
try
{
m_Player.Dispose();
}
finally
{
m_Player = null;
}
if (m_Recorder != null)
try
{
m_Recorder.Dispose();
}
finally
{
m_Recorder = null;
}
m_Fifo.Flush(); // clear all pending data
}
private void Filler(IntPtr data, int size)
{
if (m_PlayBuffer == null || m_PlayBuffer.Length < size)
m_PlayBuffer = new byte[size];
if (m_Fifo.Length >= size)
m_Fifo.Read(m_PlayBuffer, 0, size);
else
for (int i = 0; i < m_PlayBuffer.Length; i )
m_PlayBuffer[i] = 0;
System.Runtime.InteropServices.Marshal.Copy(m_PlayBuffer, 0, data, size);
// m_Fifo ==> m_PlayBuffer==> data ==> Speakers
}
private void sendVideo_Click(object sender, EventArgs e)
{
Capturing.Enabled = true;
}
private void Capturing_Tick(object sender, EventArgs e)
{
Start_Sending_Video_Conference(text_IP.Text, int.Parse(text_Camera_send_port.Text));
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
//myth.Abort();
mytcpl.Stop();
ns.Flush();
ns.Close();
//t.Abort();
r.Close();
Stop();
myclient.Close();
ms.Close();
myns.Close();
mysw.Close();
this.Close();
}
catch (Exception) { }
}
private void button1_Click(object sender, EventArgs e)
{
if (connected == false)
{
t.Start();
connected = true;
}
Start();
}
}
}