我需要显示来自无人机的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);
}
});
}
}