簡體   English   中英

如何通過Internet通過TCP將Motion JPEG發送到Windows Phone

[英]How to send Motion JPEG through internet to Windows phone over TCP

我想將運動JPEG從我的計算機發送到具有全局ip 89.232.123.122的Windows Phone電話。 如何與該手機建立連接並通過該連接推送mjpeg?

要發送多媒體(例如運動JPEG),請使用UDP而不是TCP。

在發送方使用以下代碼:

  UdpClient sendFrame = new UdpClient();
  // your image is img:
  Bitmap img = new Bitmap("pic.png");


  // always send image
  while (true)
                {
      MemoryStream memory_Stream = new MemoryStream();
      // convert bitmap to jpg
      SaveJPG100(img, memory_Stream);

      byte[] byte_Of_Frame = memory_Stream.ToArray();
     // send data on port 2000 on remote host
     sendFrame.Send(byte_Of_Frame, byte_Of_Frame.Length,"89.232.123.122",2000);

                }

//將btm轉換為jpg

public void SaveJPG100(Bitmap bmp, System.IO.Stream stream)
{

    EncoderParameters encoderParameters = new EncoderParameters(1);
    encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
    bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters);
}

// generate jpg description
public ImageCodecInfo GetEncoder(ImageFormat format)
{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
        {
            return codec;
        }
    }
    return null;
}

在接收方使用此代碼

            UdpClient receiveFrame = new UdpClient(2000);
            // recieve data from any ip address and any port
            IPEndPoint remote = new IPEndPoint(IPAddress.ANY, 0);

            while (true)
            {

                byte[] byte_Of_Frame = receiveFrame.Receive(ref remote);
                MemoryStream ms = new MemoryStream(byte_Of_Frame);

                pictureBox1.Image=(new Bitmap(ms));
            }

您必須具有網絡服務,並將您的圖片上傳到網絡服務,並將其保存在服務器或數據庫中,但我建議將其保存在服務器中...

在Web Service中:

 [WebMethod]
    public string UploadFile(byte[] f, string fileName)
    {
        try
        {
            MemoryStream ms = new MemoryStream(f);
            FileStream fs = new FileStream
               (System.Web.Hosting.HostingEnvironment.MapPath("~/ArchiveImages/") +
               fileName, FileMode.Create);
            ms.WriteTo(fs);
            ms.Close();
            fs.Close();
            fs.Dispose();

            return "ok";
        }
        catch (Exception ex)
        {
            return ex.Message.ToString();
        }
    } 

並在客戶端應用程序中:

private void UploadFile(string filename)
    {
        try
        {
            ArchiveServiceObj.ArchiveServiceSoapClient srv = new ArchiveServiceObj.ArchiveServiceSoapClient();

            MemoryStream stream = new MemoryStream();
            picscannedimage.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] pic = stream.ToArray();
            string sTmp = srv.UploadFile(pic, filename + ".jpg");
            MessageBox.Show("File Upload Status: " + sTmp, "File Upload");

        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message.ToString(), "Upload Error");
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM