dji-sdk/cloud-api-2/cloudapi2-sei-osd
Claude Code and agent skill by dji-sdk/cloud-api-2
- community
Checking that the SKILL.md file is still in the repository.
Cloud API 2.0 SEI/OSD 实时遥测数据接入助手。当用户要获取无人机帧级位置数据(SEI,内嵌于视频流)、设备遥测数据(OSD,MQTT/DRC 通道)、在地图上可视化相机视锥/FOV/视频投影、接入 FHSDK LiveModule subscribeArSeiInfo/subscribeFovSeiInfo、或遇到 SEI 解析/OSD 频率/位置对齐视频等问题时调用。触发词:SEI、OSD、帧级位置、视锥、FOV、相机姿态、视频投影、ArSeiInfo、FovSeiInfo、subscribeArSeiInfo、subscribeFovSeiInfo、LiveModule、DRC OSD、MQTT OSD、osd_frequency、遥测数据、位置对齐、像素反算经纬度、视锥中心点、Cesium 地图、NED 坐标、相机位姿、畸变参数、HostDistortParam、帧同步、实时定位。
Install
npx vskill@latest install dji-sdk/cloud-api-2/cloudapi2-sei-osdSKILL.md
DJI CloudAPI2 SEI/OSD 实时遥测数据接入助手
这个 Skill 是干什么的
帮 ISV 开发者正确接入 DJI CloudAPI2 的 SEI(帧级位置数据) 和 OSD(设备遥测数据),覆盖服务端 FHSDK 数据获取 + 前端地图可视化两端。
核心价值:ISV 最集中的痛点是"怎么拿到每一帧画面对应的、准确的、足够高频的位置数据"。本 Skill 把 SEI/OSD 的 What/Why/How 讲透。
何时触发
- 用户要获取帧级位置数据(SEI)
- 用户要获取设备遥测数据(OSD)
- 用户问 SEI vs OSD 区别、频率、前置条件
- 用户要在 Cesium/地图上可视化相机视锥、FOV、视频投影
- 用户要接入
LiveModule、subscribeArSeiInfo、subscribeFovSeiInfo - 用户遇到"OSD 频率太低对不齐视频"问题
- 用户问像素反算经纬度、视锥中心点
- 用户问 DRC OSD 配置(
osd_frequency1~30Hz) - 用户问哪代设备/固件支持 SEI
不触发:通用设备管理(→ cloudapi2-device-management)、前端 PaaS 组件接入(→ cloudapi2-frontend-component)、通用 SDK 规则(→ cloudapi2-sdk-core)。
工作流
第 1 步:判断场景
第 2 步:讲清三层位置数据
必须先让用户理解三层选型(来自 references/training-guide.md):
| 通道 | 频率 | 前置条件 | 典型用途 | |
|---|---|---|---|---|
| MQTT OSD | 0.5Hz(2s 一次,固定) | 设备在线即推 | 设备状态面板、粗轨迹 | |
| DRC OSD | 默认 3Hz,可配 1~30Hz | 需建立 DRC 链路 | 操控反馈、中高频轨迹 | |
| SEI | ~30fps(每帧都有) | 需拉流(WebRTC) | 画面+位置融合(AR、视锥、像素反算) |
判断流程:
- 要对齐视频画面 → 用 SEI
- 需要中高频位置但不拉流 → DRC OSD(配
osd_frequency) - 只看设备状态 → MQTT OSD
- 不要试图把 MQTT OSD 提到高频来对齐画面 — 这条路不通
第 3 步:读对应 reference
| 场景 | 参考文档 | |
|---|---|---|
| 技术架构(SEI vs OSD 完整梳理) | references/sei-osd-architecture.md | |
| 服务端 FHSDK 获取数据(Java) | references/server-side-guide.md | |
| 前端 Cesium 地图可视化 Demo | references/frontend-visualization.md | |
| ISV 常见问题与能力对照 | references/faq-and-capability.md | |
| 培训内容(概念讲解) | references/training-guide.md | |
| ISV 痛点汇总(需求背景) | references/isv-pain-points.md |
第 4 步:按路径输出
SEI 路径(服务端)
生成代码时遵循 references/server-side-guide.md 的完整生命周期:
注意:SEI 不依赖 DRC 链路。disconnectDrcLink仅在使用了 DRC OSD 时才需要调用。
OSD 路径(服务端)
前端可视化路径
参考 references/frontend-visualization.md,核心架构:
第 5 步:排障
SEI 常见问题:
- 拿不到 SEI → 必须走 WebRTC 直推,RTSP/声网拿不到
- 浏览器限制 → 仅 Chrome/Edge 支持(
createEncodedStreamsChromium 专有) - SEI 数据全零 → 检查是否调用了
openDroneSeiMessageSend(ar_info_switch:1) - 机型差异 → M10E/M3T 走 UTF8 JSON,M4D/M4T 走二进制协议
核心约束(critical 级别)
- SEI 必须走 WebRTC:RTSP 点播、声网拉流、自建流媒体均拿不到 i 帧 SEI
- listen/subscribe 必须配对 cancel/unSubscribe:所有订阅返回 listenId,必须在退出时释放
- LiveModule 前提:SEI 订阅前必须先
getLiveStream+start开直播成功 - DRC 前提:DRC OSD 需先
connectDrcLink成功 - null guard:
getDroneInstance(sn)/getLiveStream(liveInfo)均可能返回 null - 不要追高频 MQTT OSD:频率固定 0.5Hz,不可调;需高频请走 DRC 或 SEI
- 机型适配:SEI 解析协议因机型不同(JSON vs 二进制),角度需乘
CAM_COEFFICIENT
SEI 数据结构速查
ArSeiInfo(相机姿态 + 位置)
| 字段 | 含义 | |
|---|---|---|
cam_yaw/pitch/roll | 相机欧拉角(NED 坐标系) | |
gnd_lat/gnd_lng/gnd_alt | 地面投影点经纬高 | |
camera_pos_x/y/z | 相机相对起飞点偏移(NED,米) | |
liveview_source_cam | 当前镜头(Wide=1/Zoom=2/IR=3) |
FovSeiInfo(视场信息)
| 字段 | 含义 | |
|---|---|---|
sensor_width/height | 传感器尺寸(μm) | |
focal_length | 焦距(μm) |
DRC OSD(快速通道)
| 字段 | 含义 | |
|---|---|---|
latitude/longitude/altitude | 飞机位置 | |
attitude_head | 飞机航向 | |
gimbal_pitch/roll/yaw | 云台姿态 | |
speed_x/y/z | 速度 | |
home_distance | 距 Home 距离 |
权威参考
references/ 下的 6 份文档覆盖 SEI/OSD 接入的完整知识体系:
- 技术架构、服务端 API、前端可视化 Demo、ISV FAQ、培训内容、需求背景
参考文档已知局限(生成代码时注意)
以下是 references/ 中教学 Demo 代码的已知设计取舍,AI 生成生产代码时应改进:
- DeviceContext 的 listenId 字段缺 volatile(
server-side-guide.md):
arSeiListenId 等为普通 int,SDK 回调线程写入、应用线程读取。生产代码应使用 volatile int 或 AtomicInteger 保证跨线程可见性。
- SDK 回调 error 为 null 时的处理(
server-side-guide.md):
部分 SDK 回调成功时传 null error。Demo 中 if (error != null && error.isSuccess()) 在此情况下不存结果。生产代码应改为 if (error == null || error.isSuccess())。
- subscribeSlowOsd 静默忽略订阅失败(
server-side-guide.md):
putListenId 中 id < 0 时只跳过存储,无日志。生产代码应记录 WARN 日志。
- Cesium 私有 API `_computeNearFarPlanes`(
frontend-visualization.md):
Demo 使用下划线前缀内部方法做视锥角点计算。生产项目应锁定 Cesium 版本或改用公开 API(FrustumGeometry 的 computeNearFarPlanes)。
共享规范
本 Skill 的 constraints.yaml 仅包含 SEI/OSD 领域特有规则;通用 SDK 约束见skills/_shared/constraints-common.yaml(生成代码时需同时遵守)。跨 Skill 路由规则见skills/_shared/skill-routing.md。当发现用户意图属于其他 Skill 职责时,按转交协议切换。输出格式见skills/_shared/output-format.md。Reference 按需懒加载,不要一次性读取所有 references/。
Security
- Security scanPassed, 98 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdevkit/skills/cloudapi2-sei-osd/SKILL.md
Popularity
- Repository stars
- 151
- Repository forks
- 24
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/dji-sdk/cloud-api-2/cloudapi2-sei-osd)