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

05 媒体文件与建模

Q:getMediaFilesList() 接口的 fileTypes 参数支持哪些值?响应数据中为何没有 fileType 字段?deviceSn 应传入什么?#

查询过滤:fileTypes 参数支持过滤图片和视频类型的媒体:"2"=图片,"3"=视频。
响应数据:无 fileType 字段,可通过以下字段区分:
item.getSuffix():文件后缀名(jpg/mp4 等)
item.getExt().getImageType():细分类型(WideCamera/ZoomCamera/InfraredCamera 等)
deviceSn:需传入机场(Dock)SN,而非无人机 SN。

Q:如何通过 SDK 获取媒体的访问地址url?objectKey 和 fileId 有什么区别?url地址是否有有效期?#

需要访问媒体照片时,需要先获取媒体文件的 objectKey 或 fileId,调用 MediaServiceModule.getMediaFilesDownloadURL() 获取临时访问地址。
支持以下两种方式获取媒体访问地址:
方式一:实时监听(适用于展示最新照片)
调用:
监听媒体文件后处理事件,从回调参数 MediaFilePostProcess 中获取:
getObjectKey():原图 objectKey
getPreviewObjectKey():预览图 objectKey
随后调用:
即可获取图片访问 URL。
方式二:查询历史媒体(适用于展示历史照片)
调用:
获取媒体文件列表后,可以通过以下两种方式获取下载地址:
根据 fileId 调用:getMediaFilesDownloadURL(long fileId, callback)
根据 objectKey 批量调用:getMediaFilesDownloadURL(List<String> objectKeys, callback)
注意事项:
1.
URL 有效期为 3600 秒(1 小时),过期后需重新调用接口获取新的下载地址。
2.
getMediaFilesList 的 deviceSn 需传入机场 SN(Dock SN)。
3.
缩略图展示建议优先使用 previewObjectKey 对应的 URL。

Q:媒体回传通知 listenMediaFileDeviceUploadMessage() 在哪些场景下会触发?飞行中拍照录像是否会触发?#

媒体文件完成上传至对象存储后触发此通知。流程:飞行任务完成 → 飞机降落 → 机场上传媒体 → 推送通知。
飞行中拍照或录像不会触发该通知:飞行中拍摄的媒体存储于飞机本地,尚未上传至云端,仅飞机降落后、机场上传媒体时才会触发。
监听多个机场的媒体回传通知,性能影响可忽略。建议做法:设备离线时调用 cancelListenMediaFileDeviceUploadMessage() 取消订阅,避免资源泄漏。

Q:调用媒体后处理通知 listenMediaFilePostProcessMessage() 中getPhotoPosition() 和 getShootPosition() 有什么区别?如何获取照片拍摄时间?#

photoPosition 与 shootPosition 区别:
MediaFilePostProcess.getImageMetadata().getPhotoPosition()(拍照位置):相机镜头实际对准并成像的地面目标点坐标
MediaFilePostProcess.getImageMetadata().getShootPosition()(拍摄位置):拍摄照片时无人机所在位置的坐标
拍摄时间获取: 照片拍摄时间通过 listenMediaFilePostProcessMessage 回调中的 MediaFileImageMetaData.getPhotoCreateTime() 获取。

Q:飞行任务完成后,MinIO 中没有生成媒体的缩略图和 WebP 格式图片,应如何处理?#

任务完成后需调用回调接口触发后处理:
也可通过 listenMediaFileDeviceUploadMessage() 收到上传通知后再调用回调接口。

Q:媒体文件存储在 MinIO 中,是否会定期自动清理?如何删除?#

不会自动清理。媒体文件会永久保留直至主动删除,可以通过 SDK 如下接口删除媒体文件:

Q:如何关联航线任务与任务产生的媒体文件?task_uuid、flight_id 和 track_id 有何关联?#

listenWaylineTaskEvent 回调中的 uuid(任务 UUID)与 getMediaFilesList 返回的 flight_id 为同一值,使用该 uuid 匹配文件的 flight_id,即可关联该次航线任务及其产生的媒体文件。
三者关系如下:
字段含义产生时机
task_uuid云端创建任务的唯一标识符createFlightTask() 返回
flight_id任务执行时的架次标识(值等于 task_uuid)任务执行时赋值
track_id飞控硬件起飞后生成的航迹 ID(36 位 UUID)飞机起飞后生成

Q:如何确认一键起飞或手动拍摄的媒体已全部上传?#

航线任务: 监听 listenWaylineTaskEvent,当 mediaUploadStatus=2 时表示媒体上传结束。
一键起飞或暂停任务后手动拍摄: SDK 暂无方法判断一键起飞的媒体上传完成状态,可通过 listenMediaFileDeviceUploadMessage 按本次飞行的 flightId 查询媒体文件,再调用 getMediaFilesList 查询 total 进行核对。

Q:Terra 建模支持多少路任务并发?部署服务器有什么配置要求?#

Terra 建模任务默认采用串行处理方式,同时提交多个任务时会按顺序执行。
部署配置建议:
GPU: GTX 1650 4GB 可满足基础建模需求,复杂场景或高质量建模建议使用 8GB 及以上显存。
CPU: 推荐 8 核。
内存: 建议 64GB 及以上。
硬盘: 3D 重建建议预留原始素材大小 6 倍以上的存储空间。
对显卡是否属于游戏卡或专业卡没有限制,但暂不建议使用 Blackwell 架构显卡,如 RTX 5090、B200,当前可能存在 Terra 建模无法正常运行的情况。

Q:TerraBuildModule 支持哪些三维重建与测绘场景?上云 API 2 是否集成了 DJI Terra 的建图能力?#

是的,上云 API 2 内置 Terra 建模服务,三维重建需要 Terra 服务(包含 GPU 算法节点)配合上云 API 2 后端底座运行。通过 TerraBuildModule 接口可调用以下场景:
场景所需航线说明
地块测绘 / DOM/DEM面状测绘航线正射拍摄
三维建筑建模面状测绘航线覆盖目标建筑
全景拼接全景拍摄航点调用 createPanorama()

Q:完成航线任务并回传媒体文件后,如何发起三维重建(createReconstruction)?folderId 和 fileUuid 参数如何获取?#

建模流程如下:
1.
调用 MediaServiceModule.getMediaFilesList(params, callback) 获取媒体文件列表,从回调结果 MediaFilesListItemInfoData.getFilePath() 获取文件路径,例如 1/27/28,取第二段 27 作为 folderId。
2.
将 folderId 设置到 TerraBuildCreateReconstructionParams.setFolderIds(),调用 TerraBuildModule.createReconstruction(params, callback) 发起建模任务。其中 fileUuid 参数的值等于对应飞行任务的 flight_id(即 task_uuid)。
3.
调用 TerraBuildModule.listenReconstructionStatusChanged(callback) 监听建模进度及状态变化。

Q:如何监听三维重建任务的进度和状态变化?#

调用 TerraBuildModule.listenReconstructionStatusChanged(callback) 即可监听建模任务的进度及状态变化。

上一页
04 飞行控制
下一页
06 直播与录制
Built with