大疆无人机如何通过MQTT获取实时视频流?

要通过 MQTT 获取大疆无人机的实时视频流,需要理解一个核心原则:视频流本身不通过 MQTT 传输。MQTT 仅用于控制信令,视频流则通过 RTMP、RTSP 等协议推送到流媒体服务器。

以下是基于大疆上云 API 的具体实现方案。


💡 核心原理:信令与视频分离

大疆无人机视频传输遵循以下链路:

无人机 → 遥控器(Pilot 2)/机场(Dock) → 您的云平台

在这个链路中,MQTT 和视频流的职责是分离的:

  • MQTT (控制信令)

    • 作用:用于设备上线、状态上报(OSD)、以及下发直播控制指令(如开始/停止直播、切换镜头)。

    • Topic 示例thing/product/{gateway_sn}/services(用于调用直播服务)。

  • 视频流 (媒体数据)

    • 作用:承载实际的视频画面。

    • 传输协议:通过 RTMP、RTSP、GB28181、Agora(WebRTC) 等协议,由 Pilot 2/Dock 推送到您部署的流媒体服务器。

简单来说,MQTT 负责"发号施令",而视频流则通过独立的"管道"传输。


🚀 实现步骤

1. 准备工作
  • 适用设备:行业无人机(如 M30/M300/M4 系列)及大疆机场,并搭配支持上云 API 的遥控器或机场固件。

  • 平台部署

    • MQTT Broker:如 EMQX。

    • 流媒体服务器:如 Nginx-RTMP, SRS, ZLMediakit。

    • 业务后端:用于处理 MQTT 信令和提供视频播放页面。

  • 设备连接:在 Pilot 2 的"云服务"中配置您的云平台地址,使设备成功接入。

2. 配置流媒体服务器

在您的云服务器上部署并配置好流媒体服务,并开放一个可供 Pilot 2/Dock 访问的推流地址(Endpoint)。

  • 示例 (RTMP)rtmp://your-server-ip/live/drone1

  • 示例 (RTSP)rtsp://your-server-ip:8554/drone1

3. 通过 MQTT 下发直播指令

您的后端服务通过 MQTT 向 Pilot 2/Dock 发送直播控制指令。

  • 订阅服务响应 Topic

    用于接收直播服务的执行结果。

    thing/product/{gateway_sn}/services_reply

  • 调用直播服务 (以 RTMP 为例)

    向服务调用 Topic 发布指令,触发直播。

    • Topic : thing/product/{gateway_sn}/services

    • Method : live_start(具体名称以官方文档为准)

    • Payload 示例:

      json

      {

      "tid": "tid-123456",

      "bid": "bid-123456",

      "method": "live_start",

      "timestamp": 1712345678901,

      "data": {

      "url": "rtmp://your-server-ip/live/drone1",

      "video_type": "rtmp",

      "quality": "1080p"

      }

      }

4. 接收视频流并分发
  1. 接收推流 :Pilot 2/Dock 接收到指令后,会将视频流推送到您在 url中指定的地址。

  2. 转码与分发:您的流媒体服务器接收并管理该流,并可按需转码为 HTTP-FLV、HLS 等格式,供 Web 或移动端播放。

5. 停止直播

同样通过 MQTT 调用 live_stop服务,通知设备停止推流。

  • Topic : thing/product/{gateway_sn}/services

  • Method : live_stop

  • Payload 示例:

    json

    {

    "tid": "tid-789012",

    "bid": "bid-789012",

    "method": "live_stop",

    "timestamp": 1712345678902,

    "data": {

    "url": "rtmp://your-server-ip/live/drone1"

    }

    }


🔗 结合司空 2 平台

如果您使用大疆司空 2,流程类似,但由司空 2 作为中转:

  1. 在司空 2 的"云端互联"中配置您的 RTMP 服务器地址

  2. 通过司空 2 的 REST API 调用"发起码流转发"接口,指定您的 RTMP 地址。

  3. 司空 2 会将码流推送到您的服务器,您再通过 MQTT 订阅司空 2 的事件以获取直播状态。


📊 整体架构与数据流

无人机 → Pilot 2/Dock → (MQTT 信令) → 您的云平台 → (RTMP 视频流) → 您的流媒体服务器 → (HTTP-FLV/HLS) → Web/App

总结来说,MQTT 是"遥控器",负责下达"开始直播"的指令;而视频流是"货物",通过 RTMP 等协议这条"高速公路"被运送到您的服务器。

相关推荐
程序员差不多先生2 小时前
OpenAI 把 Codex Harness 开源:AI Agent 的“操作系统“之争正式开打
人工智能·开源
开发者导航2 小时前
【有趣网站】免费优质资源与实用工具导航:开发者导航
人工智能·程序人生
AI导出鸭PC端2 小时前
告别复制乱码:从「秘塔怎么复制表格」到「AI 导出鸭」的专业解法
人工智能·豆包·ai导出鸭
番茄不是西红柿kk2 小时前
deepseek-harness跨平台桌面端二开项目(四)安装完点“启动应用“却没反应?背后是 sidecar 的冷启动预算与杀软博弈
人工智能·agent·deepseek
Csxyzj3 小时前
Nginx:企业高性能web服务器(一)
运维·服务器·nginx
Eloudy3 小时前
sunshine - ubuntu 22.04, moonlight - mac OS26 远程桌面
linux·运维·ubuntu
雅菲奥朗3 小时前
开课通知|9月12-13日 FDE实战训练营:深耕AI落地实战,赋能职场能力进阶
人工智能·vibe coding·fde
旗开得胜马到成功3 小时前
工控系统备份的底层技术解析:老旧协议、零停机窗口与中科热备的专项破局
运维·服务器·vr
武子康3 小时前
DeepSeek Harness 为什么不用 messages 数组保存一切
人工智能·llm·agent
AC赳赳老秦3 小时前
企业标签体系搭建:基于 OpenClaw 采集的多维度公开数据,构建企业画像标签库
java·运维·服务器·python·信息可视化·deepseek·openclaw