MissionPlanner架构梳理之(十八)视频流

概述和目的

Mission Planner 通过与强大的多媒体框架 GStreamer 集成,支持无人机和其他自动驾驶车辆的实时视频流传输。本页面介绍了视频流传输子系统,该子系统允许操作员直接在 Mission Planner 界面中查看来自其车辆的摄像头信号。

Mission Planner 中的视频流功能包括:

  • 支持多种视频格式(H.264、H.265)
  • 多种传输协议(UDP、RTSP)
  • 自动发现并连接视频流
  • 与飞行数据视图和HUD集成

建筑学

Mission Planner 中的视频流系统由几个协同工作的关键组件组成:

视频流架构

数据流处理

视频流数据流

支持的视频格式和协议

Mission Planner 支持各种视频流格式和协议:

格式 协议 默认端口 笔记
H.264 UDP 5000、5100、5600 最常用的格式
H.265 UDP 5601 更高效的编码
H.264 实时消息协议 554, 8554 被 SkyViper、HereLink 等设备使用

GStreamer 集成

Mission Planner 使用 GStreamer 作为其视频处理引擎。该类GStreamer提供了一个 C# 包装器,用于原生 GStreamer 库,主要功能如下:

  1. 跨平台支持:通过后端特定的实现支持 Windows、Linux 和 Android 平台
  2. 本机方法包装器:为 GStreamer 本机方法提供 C# 包装器
  3. 管道管理:创建和管理用于视频处理的 GStreamer 管道
  4. 帧通知:当有新的视频帧可用时引发事件

GStreamer课程提供:

  • 启动和停止视频流的方法
  • OnNewImage通过事件处理和传递帧
  • GStreamer 管道生命周期的管理

GStreamer 管道

视频处理通过 GStreamer 管道字符串进行配置。这些管道由按顺序处理视频流的元素组成。例如:

复制代码
udpsrc port=5600 buffer-size=90000 ! application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264 ! decodebin3 ! queue max-size-buffers=1 leaky=2 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink sync=false

该管道:

  1. 在端口 5600 上接收 UDP 数据(udpsrc
  2. 将其解释为 RTP 封装的 H.264 视频 ( application/x-rtp)
  3. 将 H.264 视频解码为原始帧(decodebin3
  4. 使用小缓冲区来最小化延迟(queue max-size-buffers=1 leaky=2
  5. 将视频转换为 Mission Planner 可用的格式(videoconvertvideo/x-raw,format=BGRA
  6. 将帧传送给应用程序(appsink

自动发现和连接

该类AutoConnect管理视频流的自动发现和连接,具有以下主要特点:

  1. 预定义连接:系统包括常见的视频流配置,以简化设置
  2. 自动发现:它在公共端口上监听传入的视频流
  3. 连接管理:它设置并管理与检测到的流的连接
  4. 事件通知:检测到新流时引发事件

连接信息

视频流配置存储为ConnectionInfo对象,其中包括:

  • 标签:连接的用户友好名称
  • 协议:网络协议(UDP、TCP)
  • 端口:要使用的网络端口
  • 格式:数据格式(视频)
  • 方向:连接是入站还是出站
  • ConfigString:GStreamer 管道配置

用户界面集成

视频流显示在任务规划器用户界面中,主要在飞行数据视图中。关键的 UI 集成点包括:

  1. 视频显示:显示车辆的视频流
  2. 控制菜单:允许选择和配置视频流
  3. HUD Overlay:可以在视频显示上叠加飞行数据

OnNewImage该类的事件将GStreamer帧传送到 UI 组件进行显示。

常见车辆集成

Mission Planner 包含对几种流行视频流系统的预配置支持:

这里链接

HereLink 通过具有特定管道配置的 RTSP 流获得支持:

复制代码
rtspsrc location=rtsp://192.168.43.1:8554/fpv_stream latency=41 udp-reconnect=1 timeout=0 do-retransmission=false ! application/x-rtp ! decodebin3 ! queue max-size-buffers=1 leaky=2 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink sync=false

天空毒蛇

SkyViper 通过特定的 RTSP 配置获得支持:

复制代码
rtspsrc location=rtsp://192.168.99.1/media/stream2 debug=false buffer-mode=1 latency=100 ntp-time-source=3 ! application/x-rtp ! decodebin3 ! queue max-size-buffers=1 leaky=2 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink sync=false

设置和安装

GStreamer 要求

Mission Planner 需要安装 GStreamer 才能进行视频流传输。系统通过两种方式处理此问题:

  1. 自动检测:Mission Planner 寻找现有的 GStreamer 安装
  2. 自动安装:如果未找到 GStreamer,Mission Planner 可以下载并安装它

GStreamerUI.DownloadGStreamer()方法管理下载和安装过程。

配置和定制

用户可以通过多种方式配置视频流:

  1. 预定义连接:使用内置连接配置文件
  2. 自定义 GStreamer 管道:根据特定需求创建自定义 GStreamer 管道
  3. 连接设置:配置连接参数,如端口、IP 地址等。

添加自定义视频流

要配置自定义视频流,您可以ConnectionInfoAutoConnect.connectionInfos列表中添加新的内容:

复制代码
new ConnectionInfo("Custom H264 Stream", true, 5700, ProtocolType.Udp, ConnectionFormat.Video,
    Direction.Inbound,
    "udpsrc port=5700 buffer-size=90000 ! application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264 ! decodebin3 ! queue max-size-buffers=1 leaky=2 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink sync=false")

故障排除

Mission Planner 中视频流的常见问题:

GStreamer 安装问题

如果视频流不起作用,请检查 GStreamer 是否正确安装:

  1. Mission Planner 检查 GStreamerGStreamer.GstLaunch
  2. 如果未找到,请使用GStreamerUI.DownloadGStreamer()安装
  3. 通过检查 GStreamer 二进制文件来验证安装

网络配置问题

视频流需要正确的网络配置:

  1. 确保适当的网络端口已打开(例如,用于常见 UDP 视频的 5600)
  2. 验证视频源的IP地址是否正确
  3. 检查没有防火墙阻止视频流

性能问题

为了提高视频流性能:

  1. 调整 GStreamer 管道中的缓冲区大小
  2. 降低延迟设置以获得更灵敏的视频
  3. 确保您的计算机具有足够的处理能力进行视频解码

概括

Mission Planner 的视频流系统提供了一种灵活而强大的方式,可以查看来自自动驾驶汽车的实时视频。通过利用 GStreamer 并支持各种协议和格式,它实现了视频源与地面控制站其他功能的无缝集成。

该系统的架构允许轻松扩展和定制,而自动发现功能简化了最终用户的设置和配置。

相关推荐
威视锐科技21 小时前
无人机被动探测与定位
无人机·威视锐
凌虚1 天前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
这张生成的图像能检测吗1 天前
(论文速读)元结构增强的单传感器无人机螺旋桨故障定位方法
无人机·故障诊断·结构设计·缺陷识别
努力进修1 天前
KFS 全链路并行架构:异构增量同步的 TB 级性能突破
架构·kfs
老王以为1 天前
走进 AI Agent
前端·人工智能·架构
SLD_Allen1 天前
大模型推理引擎架构深度解析:vLLM、SGLang与TensorRT-LLM的技术路线对决
架构·vllm·sglang
cxr8281 天前
Graphify vs GitNexus vs CodeGraph — 三工具架构深度对比
开发语言·架构·知识图谱
奈斯先生Vector1 天前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
隔窗听雨眠1 天前
生产级Kubernetes集群部署完全指南:从kubeadm到高可用架构落地
容器·架构·kubernetes
IT小白杨1 天前
2026亚马逊多店铺运营的环境隔离架构与合规实践
经验分享·架构·业界资讯·指纹浏览器