1. SDK
上云 API 2 知识库
  • 上云 API 2 FAQ
    • 上云 API 2 航线编辑器地图中机库位置与实际位置不一致
    • k3s 安装失败报错:x509: certificate signed by unknown authority
    • RC Pro 安装 Pilot 2 APP 时报错:未安装应用
    • 上云 API 2 中调用 SDK 的 getDeviceList 接口报错 404
    • 上云 API 2 在安装底座管理平台时报错:set password into system management failed: send request failed
    • 上云 API 2 安装底座报错:container loki is unhealthy
    • 在服务器手动部署 上云 API 2 底座后,访问底座管理平台报错:无法访问此网站
    • 在上云 API 2 管理平台更改一些配置后点击保存,一段时间后发现部分容器处于 Created 状态
    • 上云 API 2 在航线编辑器组件中创建航线报错:提交失败,请重试
    • 上云 API 2 执行 CodeMeter 安装脚本失败,提示 dpkg: error processing package codemeter-lite
    • 可视化部署底座时报错:install system management failed: exit status 1
    • 上云 API 2 底座安装 4G 增强图传服务后,4G 网络无法正常连接,设备无法通过 4G 链路上云
    • 上云 API 2 底座可视化部署安装过程中,提示缺少必要依赖包
    • 上云 API 2 航线编辑器,点击左上角返回按钮,无法退回上一级页面
    • 上云 API 2 订阅 subscribeDroneOpenProgress / CloseProgress 接口收不到数据
    • 上云 API 2 驾驶舱组件无法开启机场和无人机直播
    • 上云 API 2 通过 SDK 上传固件超时,提示连接失败
    • 上云 API 2 通过 SDK 提交固件升级后,查询进度无返回,前端组件页面进度停留在 0%
    • 上云 API 2 可视化部署安装底座,上传证书提示错误代码 7011:检测为非法证书
    • 使用上云 API 2 航线编辑组件创建航线保存失败,F12 控制台报错 ERR_CONNECTION_RESET
    • 使用上云 API 2 SDK 接口 createReconstruction 创建建模任务时需要传参 FolderId,这个 id 如何获取
    • 创建建模任务后 监听状态变更接口 listenReconstructionStatusChanged 返回的 state(建图文件状态)一直卡在 12(等待 Terra Cloud 资源中)
    • 如何使用上云 API 2 SDK 接口计算飞机镜头在地面上的覆盖面积
    • 将上云 API 2 航线预览页面封装成 Vue 组件后,切换路由再次进入时页面无法正常渲染
    • 上云 API 2 前端组件在开发环境正常,但部署到生产环境后页面报错 crypto.randomUUID is not a function
    • 使用上云 API 2 SDK 三维重建接口 createReconstruction 如何传参才能生成点云(LAS)?
    • 调用上云 API 2 SDK 接口 liveModule.start 开启直播偶现报错 213003 是什么原因
    • 运行上云 API 2 的 SDK Demo 失败,报错缺少 libatomic.so.1
    • 使用上云 API 2 SDK 接口 subscribeLiveStream() 订阅无人机直播视频帧,一段时间后直播卡顿或 SDK 收不到帧数据
    • 上云 API 2 SDK 初始化失败,日志报错 libVolcEngineRTC.so 加载失败
    • 在 上云 API 2 SDK 回调线程中调用 Future.get() 导致查询超时
    • 卸载上云 API2 底座后 AIO 管理后台仍可访问
    • 前端引入上云 API 2 前端组件的 paas.js 后,控制台输入 window.FH2 返回 undefined
    • 使用上云 API 2 SDK 收不到订阅的监听回调,日志报错 ws is not open / error -3
    • 使用上云 API 2 SDK 接口 createCustomizedFlightAreas 创建多边形限飞区失败,日志报错 err -5、230001
    • 在上云 API 2 前端设备管理组件上传固件失败,网页报错 TimeoutError
    • 建模任务创建后 listenReconstructionStatusChanged 立即回失败态(state=8)
    • 使用上云 API SDK 接口 getFlightTaskList 查询任务列表,传入空 sn 列表查不到任务数据
    • 使用上云 API 2 SDK 接口 createReconstruction 建模成功,但 getModelFileUrl 一直返回空 URL,成果 ZIP 无法生成
    • 一键起飞后实际飞行高度与设置预期不符,飞行器先爬升再下降
    • 上云 API 2 航线编辑器编辑保存后没有 Promise 回调,业务逻辑应写在哪里
    • 访问上云 API 2 前端组件的官方 HTML Demo 驾驶舱页面正常,改为 Vue 项目后驾驶舱页面能加载完成但显示状态异常
    • 前端组件在开发环境可以正常使用,但部署到生产环境后,部分 SDK 资源加载失败
    • 可视化页面部署安装时 「Terra 建模服务」下的「SERVER_IP」应该填内网 IP 还是外网 IP?
    • 飞行任务结束后媒体文件没有正常回传,调用 SDK 接口 getMediaFilesList 查询不到照片
    • 上云 API 2 如何设置航线编辑器组件的地图默认加载中心点
    • 上云 API 2 SDK 初始化正常但获取设备列表返回 ERROR_OPERATION_FAILED(httpCode=0 / errno=113 connect failed)
    • 使用上云 API 2 SDK 接口 getDroneInstance 获取不到飞行器实例
    • 已通过 SDK 获取负载控制权但负载操控接口返回 -6、负载监听无消息
    • 如何使用上云 API 2 SDK 接口 createReconstruction 生成高斯泼溅(3DGS)成果?
    • 使用上云 API 2 航线编辑器组件创建航线后未自动进入航线编辑界面,如何继续编辑航线?
    • 调用 getWaylineList 后业务接口已返回,异步查询结果还未回调
    • 在上云 API 2 可视化页面部署底座时设置密码后点击确定后页面无响应
    • 服务器异常停电,重启上云 API 2 底座服务容器之后报错:container pf-atc-service is unhealthy
    • 管理后台的密码忘记了怎么办?怎么修改管理后台的密码?
    • 在上云 API 2 底座安装包下的 env 文件中修改启用 HTTPS 相关配置后执行 ./setuptools update 报错
    • 在上云 API 2 的管理后台配置三方 Minio 后媒体管理航线管理异常
    • 使用上云 API 2 建模成功但调用 getQualityReport 接口返回状态始终为"质量报告生成中"
    • 在上云 API 2 可视化页面部署成功后 无法正常进入 AIO 管理后台,页面提示:请先激活再使用系统
    • 上云 API 2 底座部署过程中部分容器报错:unhealthy
    • 上云 API 2 手飞设备如何上云
    • 上云 API 2 底座管理平台首次激活扫码无反应,无法扫出激活码
  • 上云 API 2 常见 QA
    • 产品能力和设备运行与管控底座
    • 许可证相关
    • 安装部署
    • 设备上云
    • 前端组件
    • SDK
      • 01 接入与初始化
      • 02 飞行任务
      • 03 设备状态
      • 04 飞行控制
      • 05 媒体文件与建模
      • 06 直播与录制
      • 07 航线管理
      • 08 固件·RTK·飞行区
      • 09 信号地图
  1. SDK

06 直播与录制

Q:上云 API 2 SDK 是否支持设置设备的直播清晰度?#

支持。可通过 LiveModule.setLiveQuality(LiveQualitySettingParams, callback) 接口设置设备直播清晰度。
调用流程如下:
listenLiveAvailableRange(callback)
↓
获取 LiveInfo
↓
getLiveStream(LiveInfo)
↓
LiveModule.setLiveQuality(LiveQualitySettingParams, callback)
LiveQualitySettingParams 需要设置以下参数:
参数说明获取方式
sn设备序列号LiveInfo.getDeviceSn()
camera摄像头标识LiveInfo.getPayloadIndex()
video视频流标识LiveInfo.getVideoId()
videoQuality视频质量等级0:自适应;1:标清;4:超清
camera 和 video 参数应从 listenLiveAvailableRange 回调返回的 LiveInfo 对象中获取。

Q:subscribeLiveStream() 与 PullStreamModule 获得直播流有何区别?如何将直播流转推到第三方平台?#

两种取流方式的区别:
方式视频源适用场景
subscribeLiveStream()大疆设备推送至平台的视频流获取机场/无人机的实时航拍画面
PullStreamModule.start()标准 WHEP 流拉取自有流媒体服务器的视频流
如需将设备视频推送至自有流媒体服务器,使用 subscribeLiveStream() 获取 H.264 裸流后在业务侧推流处理。
PullStreamModule 获取 WHEP 拉流地址:
WHEP 拉流地址由 ISV 自有流媒体服务器提供:
该接口仅支持标准 WHEP 协议流。
转推第三方平台的实现方式:
底座直播转推: 通过 LiveModule 获取视频帧,再使用 FFmpeg 等工具推送到第三方平台。
PullStreamModule: 用于拉取已有 WHEP 地址的视频流,适合接入用户自有媒体服务器提供的 WHEP 流,并进行帧处理、保存或二次转推。

Q:如何判断当前直播流是否在持续?#

通过 subscribeLiveStream() 的回调判断:持续收到数据回调表示有码流;若回调停止则表示码流已断开。

Q:驾驶舱页面无法显示直播视频流,应如何排查?#

常见原因及处理:
1.
浏览器版本过低:升级至 Chrome 92+、Safari 13+、Firefox 90+ 及以上
2.
HTTP 环境下 WebRTC 受限:非 localhost 的 HTTP 环境下浏览器会限制 WebRTC,需启用 HTTPS

Q:如何在部署底座时时设置 WebRTC 开关?#

在 env 配置文件中修改以下参数并重启容器:
执行命令:

Q:直播与录制相关错误码 213003、213020、213022 分别代表什么?#

错误码触发接口含义处理方法
213003LiveModule.start()目标飞行器当前不具备直播启动条件常见场景是飞行器在舱内关机或设备离线,确认飞行器已开机、在线并建立链路后再启动直播
213020LiveRecordModule.startLiveRecord()录制失败:当前镜头尚未建立直播流(设备当前未开启推流)先启动对应镜头直播,确认设备已在线并成功建立直播推流后,再开启录制
213022LiveRecordModule.startLiveRecord()录制失败:已有录制任务进行中先停止现有录制

Q:调用 LiveRecordModule.startLiveRecord 接口开启直播录制,录制文件存在哪里?#

录制结束后调用 MediaServiceModule.getMediaFilesList(params, callback) 接口即可查询到录制的文件。

Q:如何从直播流中获取相机的经纬度、俯仰角、偏航角信息?#

通过 SEI 数据获取,步骤如下:
1.
调用 Drone.listenLiveAvailableRange(callback) 获取直播流信息,回调返回 LiveInfo
2.
调用 Drone.getLiveStream(liveInfo) 创建 LiveModule
3.
调用 LiveModule.start() 发起拉流
4.
调用 LiveModule.subscribeArSeiInfo(callback) 订阅 AR SEI 回调
回调中可获取的字段(回调数据类型为 ArSeiInfo):
ArSeiInfo.getCameraYaw():偏航角(度)
ArSeiInfo.getCameraPitch():俯仰角(度)
ArSeiInfo.getLatitude():纬度
ArSeiInfo.getLongitude():经度

Q:如何通过 SDK 判断当前直播流对应的镜头类型?#

SDK 不直接查询当前直播镜头类型,需结合 payloadIndex 和设备负载类型进行判断。
可通过以下接口获取设备当前挂载的所有负载信息:
drone.listenLiveAvailableRange(callback):获取所有可用直播流信息(LiveInfo),返回结果中包含 payloadIndex。
drone.listenAircraftPayloadsOsdInfo(callback):获取所有负载的 OSD 信息,返回结果中包含 payloadIndex。
payloadIndex 的格式如下:
{type}-{subtype}-{gimbalIndex}
例如:
99-0-0
165-0-7
其中,type 字段表示负载类型(设备型号),subtype 表示镜头类型,gimbalIndex 表示云台索引。
以 M4TD(type=99,三光机型)为例,subtype 取值含义如下:
subtype镜头类型
0广角
1变焦
2红外
3多光谱
判断步骤:
1.
通过上述接口获取设备实际上报的所有 payloadIndex。
2.
提取 payloadIndex 中的 type 和 subtype 字段。
3.
对照 DJI 开发者文档中的相机枚举表,确认对应的镜头类型,例如广角镜头、长焦镜头、红外镜头等。
参考文档:https://developer.dji.com/doc/cloud-api-tutorial/cn/overview/product-support.html

Q:使用 LiveModule.subscribeLiveStream(FlightHubCallback.LiveStreamCallback) 订阅直播数据帧时,机库画面正常但无人机辅助影像没有数据,如何处理?#

辅助影像流需在飞行器开机并建立链路后产生,建议在飞行器起飞后进行验证。
飞行器在舱内关机或离线时,不会产生对应辅助影像流。

Q:一个设备同时会有多个可用的直播源吗?如何获取并选择?#

同一设备可能同时存在多路直播源,如负载相机主镜头、辅助镜头或机场相机等,每路直播源对应不同的 video_id。
调用 listenLiveAvailableRange 获取可用直播源列表 List<LiveInfo>,再从目标 LiveInfo 中获取对应直播参数并调用 getLiveStream 起流。
实际可用直播源以回调返回结果为准。

Q:如何使用 SDK 切换红外直播镜头?#

1.
调用 listenLiveAvailableRange 获取 LiveInfo,通过 getSwitchableLensTypeSwigValues() 确认设备支持 IR 镜头。
2.
先开启直播并通过 connectDrcLink 建立 DRC 链路。
3.
组装 SwitchLiveLensParams,设置 payloadIndex 和 lensType=CameraLensType.IR。
4.
调用 switchLiveLens 完成切换。

上一页
05 媒体文件与建模
下一页
07 航线管理
Built with