タイムラプスビデオフィードのようにjpeg画像を絶えず送信しているサーバーがあります。これらの画像をC#WinForm TCPクライアントで表示する必要があり、ストリーミングに問題があります。
私はここや同様の問題を抱えている他のサイトで多くの投稿を読みましたが、どれも私の問題の解決策を提供することができませんでした。
サーバーから画像を取得し、PictureBoxコントロールを使用して表示することを目的とした次のコードがあります:(画像ストリームにヘッダー情報があります)
while (true)
{
NetworkStream stream = m_client.GetStream(); //Get the data stream from the server
//Load Image
while (stream.DataAvailable)
{
byte[] buffer = new byte[m_client.ReceiveBufferSize];
stream.Read(buffer, 0, buffer.Length);
string tempString = System.Text.Encoding.ASCII.GetString(buffer);
//split header info and data into separate strings
string[] splitString = tempString.Split(new string[] { "]" }, 2, StringSplitOptions.None);
splitString[0] = splitString[0].Replace(@"\", "");
//split header info into separate strings for use later
string[] imageInfo = splitString[0].Split('|');
int size = Convert.ToInt32(tempString.Length);
//int offset = splitString[0].Length;
buffer = new byte[size];
stream.Read(buffer, 0, buffer.Length);
//Convert Image Data To Image
MemoryStream imageStream = new MemoryStream(buffer, 0, buffer.Length);
imageStream.Position = 0;
Bitmap img = new Bitmap(imageStream);
//set the image display box properties
VideoBox.Width = img.Width;
VideoBox.Height = img.Height;
VideoBox.Image = img; //Show the image in the picturebox
}
stream.Flush();
}
現在、このコードBitmap img = new Bitmap(imageStream);
は、パラメータが有効でないエラーを与えるところまで実行されます。
これは私がこれを行ったのは初めてなので、次に何を試すかについて少し迷っています。最後の日はさまざまな解決策を試しましたが、これはこれまでのところ最高のようです(私は:sだと思います)。
私が間違っていることや行方不明になっていることを誰かが指摘していただければ幸いです。