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 并支持各种协议和格式,它实现了视频源与地面控制站其他功能的无缝集成。

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

相关推荐
一枝小雨3 小时前
【DMA】深入解析DMA控制器架构与运作原理
stm32·单片机·嵌入式硬件·系统架构·dma·嵌入式·arm
阿里云云原生3 小时前
移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
华为·架构·harmonyos
杨杨杨大侠3 小时前
探索 Event 框架实战指南:微服务系统中的事件驱动通信:
java·spring boot·微服务·云原生·架构·系统架构
嘉禾望岗5036 小时前
hive架构及搭建
hive·hadoop·架构
qqxhb6 小时前
系统架构设计师备考第27天——基于构件的软件工程
系统架构·软件工程·构件·组装·cbse·胶水代码
Likeadust6 小时前
EasyDSS视频推拉流技术如何实现无人机高清推流与超低延迟直播?
音视频·无人机
cuigaosheng7 小时前
关于px4 1.15.0电机控制有效矩阵的更新
线性代数·矩阵·无人机
拾光师7 小时前
Hadoop 1.x 与 2.x 版本对比:架构演进与核心差异解析
大数据·hadoop·架构
一枝小雨8 小时前
【DMA】DMA入门:理解DMA与CPU的并行
单片机·系统架构·dma·嵌入式·arm