如何在C#

时间:2019-06-09 12:19:49

标签: c# udp video-capture

我需要显示来自无人机的UDP原始数据。

不幸的是,无人机不仅使用了现有的流视频标准之一,例如RTSP。取而代之的是,原始视频数据包是通过UDP发送的,需要重新组合和解码后才能查看。

由于单个视频帧的大小大于单个UDP数据包的大小,因此Tello会将每个帧分开,并发送带有2个字节的报头的数据包以指示如何重新组装它们。

视频数据本身只是H264编码的YUV420p。使用这些信息,一旦删除标头字节,就有可能使用ffmpeg等标准工具对视频进行解码。

有什么想法可以使用C#做到吗?

Position    Usage
0           Sequence number
1           Sub-sequence number
2-n         Video data
UdpClient receiver = new UdpClient(11111);
            //receiver.Client.ReceiveBufferSize = 1024;
            IPEndPoint hostEP = new IPEndPoint(IPAddress.Parse("192.168.10.1"),0);
            receiver.Connect(hostEP);

            IPEndPoint ep = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
            int i = 0;

            string fileName = "car_pic";


            while (true)
            {

                if (receiver.Available > 0)
                {

                        //Debug.Write("Packet Received");
                        byte[] data = receiver.Receive(ref ep);

                        MemoryStream stream = new MemoryStream(data);


                        Device.BeginInvokeOnMainThread(() =>
                        {
                             try
                             {

                                 //DronController.displayImage.Source = 
                                 ImageSource.FromStream(()=>stream);
                                 //DronController.displayPath.Text = 
                                 data.ToString();
                                 //stream.Close();
                              }
                              catch (Exception ex)
                              {
                                  Debug.WriteLine("Exception!!!");
                                  Debug.WriteLine(ex);
                              } 
                      });

                }
            }

0 个答案:

没有答案