के माध्यम से वीडियो फ्रेम भेजें मैं Kinect डिवाइस के साथ वीडियो स्ट्रीम पर कब्जा कर लिया। मुझे नेटवर्क पर इस धाराओं को भेजने की जरूरत है। इस उद्देश्य के लिए मैंने सॉकेट का इस्तेमाल किया। उसकी सर्वर और ग्राहक में कोड का टुकड़ा है:सॉकेट
private System.Drawing.Bitmap _CurrentBitmap;
public ManWindow()
{
InitializeComponent();
this.Loaded += delegate
{
BackgroundWorker bw1 = new BackgroundWorker();
bw1.RunWorkerCompleted += (a, b) => bw1.RunWorkerAsync();
bw1.DoWork += delegate { SendImage(); };
bw1.RunWorkerAsync();
};
}
public void SendImage()
{
Socket sListen = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPAddress IP = IPAddress.Parse("127.0.0.1");
IPEndPoint IPE = new IPEndPoint(IP, 4321);
sListen.Bind(IPE);
sListen.Listen(2);
while (true)
{
Socket clientSocket;
clientSocket = sListen.Accept();
var converter = new System.Drawing.ImageConverter();
byte[] buffer = (byte[])converter.ConvertTo(_CurrentBitmap, typeof(byte[]));
clientSocket.Send(buffer, buffer.Length, SocketFlags.None);
}
}
ग्राहक:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
BackgroundWorker bw11111 = new BackgroundWorker();
bw11111.RunWorkerCompleted += (a, b) => bw11111.RunWorkerAsync();
bw11111.DoWork += delegate { Recive(); };
bw11111.RunWorkerAsync();
Recive();
}
public void Recive()
{
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPAddress IP = IPAddress.Parse("127.0.0.1");
IPEndPoint IPE = new IPEndPoint(IP, 4321);
s.Connect(IPE);
while (true)
{
byte[] buffer = new byte[1000000];
s.Receive(buffer, buffer.Length, SocketFlags.None);
MemoryStream ms = new MemoryStream(buffer);
ms.Write(buffer, 0, buffer.Length);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(ms);
Dispatcher.BeginInvoke(new Action(() =>
{
rgbImage11.Source = bitmap.ToBitmapSource();
}));
}
}
_CurrentBitmap फ्रेम कि Kinect और हर 1 सेकंड अद्यतन से readed है। जब क्लाइंट शुरू होता है, फोन सॉकेट प्राप्त विधि है, यह फ्रेम प्राप्त करता है और परिवर्तित छवि WPF नियंत्रण करने के लिए इसे asign बिटमैप के बाद। मेरी समस्या यह है कि यह क्रिया क्लाइंट में एक और लूप होती है जिसे दोहराया नहीं जाता है।
बस एक अनुमान, लेकिन एक बार आप सर्वर में छवि भेजने के लिए, अपने सॉकेट क्षेत्र से बाहर तो मैं सोच भी ग्राहक कनेक्शन खो देता है, और मर जाता है गिर जाता है। – Chris
नहीं किसी भी त्रुटि, क्यों विधि एक बार कहा जाता है प्राप्त होता है? क्या वीडियो भेजने का कोई और तरीका है? –