|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2007
Messaggi: 68
|
[C#.Net] Cl/Sr Invio immagini cam lente e non fluide
Salve a tutti..
ho questo programmino Client/Server e uso UDP per l'invio di immagini.. la cattura da cam la effettuo con aforge.. metto i frame in una coda ed invio!! Vi faccio vedere il codice Server Codice:
for (; ; )
{
if (coda.Count > 0)
{
try
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
byte[] data;
img = coda.Dequeue();
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Position = 0;
data = new byte[stream.Length];
stream.Read(data, 0, Convert.ToInt32(stream.Length));
stream.Close();
IPEndPoint ep = new IPEndPoint(broadcast, port);
s.SendTo(data, ep);
} }
catch (Exception e)
{
}
}
}
Codice:
listener = new UdpClient(port);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, port);
try
{
while (true)
{
byte[] b = listener.Receive(ref groupEP);
MemoryStream mstream = new MemoryStream(b);
Bitmap bmm = new Bitmap(mstream);
bmm = new Bitmap(bmm, new Size(320, 240));
pictureBox1.Image = bmm;
}
}
catch (Exception e)
{
}
finally
{
listener.Close();
}
Perchè vedo le immagini non fluide? alcune a scatti.. altre volte si blocca e mi arrivano tutte d'un colpo.. dove sbaglio? grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
scusa per la risposta tardiva.. ma causa vacanze non sono sul forum da un pò..
io innanzitutto farei attendere il server prima di inviare l'immagine al clienti fino a quando questo non ha visualizzato quella precedente (ad esempio puoi far inviare al client qualche byte che significa "sono pronto a riceverne una nuova") poi... potresti usare jpeg invece di png... e inviare soltanto i pixel differenti dall'immagine precedente per ridurre il numero di byte da inviare... a questo proposito dai un occhio qui http://www.bryancook.net/2009/10/fin...-images-c.html spero di esserti stato d'aiuto ---- siccome è uno stream potrebbe aiutare creare un buffer e mantenerlo non solo a lato server ma anche a lato client.. se il client "può restare indietro di qualche frame"; Ultima modifica di nikel : 29-08-2010 alle 20:25. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:42.



















