using System; using System.Net; using System.Net.Sockets; using System.Text; using System.IO; using System.Collections.Generic; using System.Diagnostics; public class UDPListener{ private const int listenPort = 5000; public static int Main(){ Console.Write("Smartcam IP [XXX.XXX.XXX.XXX] : "); string ip = Console.ReadLine(); Console.Write("/dev/video[0] or /dev/video[1]: "); string source = Console.ReadLine(); bool done = false; UdpClient listener = new UdpClient(listenPort); IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort); byte[] receive_byte_array; Queue<byte> _buffer = new Queue<byte>(); byte[] message = new byte[2]; TcpClient _tc = new TcpClient(ip, 9361); NetworkStream _ns = _tc.GetStream(); Process.Start(String.Format("gst-launch-0.10 v4l2camsrc device=/dev/video{0} driver-name=omap3cam ! ffmpegcolorspace ! video/x-raw-yuv,width=320,height=240 ! jpegenc ! udpsink host=127.0.0.1 port=5000", source)); try{ while(!done){ receive_byte_array = listener.Receive(ref groupEP); if (receive_byte_array.Length != 0){ byte[] _fileData = receive_byte_array; byte[] _tmpSize = new byte[4]; _tmpSize = BitConverter.GetBytes(_fileData.Length); _buffer.Enqueue(1); _buffer.Enqueue(_tmpSize[2]); _buffer.Enqueue(_tmpSize[1]); _buffer.Enqueue(_tmpSize[0]); foreach(byte _b in _fileData){ _buffer.Enqueue(_b); } byte[] _packet = _buffer.ToArray(); _ns.Write(_packet, 0, _packet.Length); _buffer = new Queue<byte>(); } } }catch(Exception e){ Console.WriteLine(e.ToString()); } listener.Close(); return 0; } }
gst-launch v4l2camsrc device=/dev/video1 num-buffers=1 ! fakesink