上云 API 开发过程中的问题及解决
目前很多公司希望使用上云 API 开发自己的无人机平台,但官网资料不是特别完善。下面浅谈一下本人在开发过程中遇到的一系列问题。
环境说明
- 机场:大疆机场2
- 飞机:M3TD
- 网络:纯内网使用
部署
链接
开发环境
- 后端:Maven, JDK 17
- 前端:使用 Yarn 下载依赖
安装中间件
EMQX
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0
后端配置
mqtt:
BASIC:
protocol: MQTT
host: 127.0.0.1
port: 1883
username: JavaServer
password: 123456
client-id: 123456
DRC:
protocol: WS
host: 127.0.0.1
port: 8083
path: /mqtt
username: JavaServer
password: 123456
前端配置
MySQL 8.0
执行后端中的脚本即可。
后端配置
datasource:
druid:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/cloud_sample?useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
initial-size: 10
min-idle: 10
max-active: 20
max-wait: 60000
Redis
下载 Redis 6 并通过 Docker 部署。
后端配置
redis:
host: 127.0.0.1
port: 6379
database: 2
username:
password:
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
MinIO
如需内网使用,需自行搭建存储服务并修改以下后端配置。
oss:
enable: true
provider: minio
endpoint: http://127.0.0.1:9000
access-key: <your-access-key>
secret-key: <your-secret-key>
bucket: cloud-bucket
expire: 3600
region: us-east-1
object-dir-prefix: wayline
NTP
搭建内网 NTP 服务器,避免执行航线时出现报错。
后端配置
ntp:
server:
host: 127.0.0.1
port: 123
直播服务器
- 内网可搭建 ZLMediaKit 或 SRS 服务。
- 外网可直接使用声网服务。
ZLMediaKit
通过 Docker 部署:
CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 \
--env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf
RTMP 配置
后端:
rtmp:
url: rtmp://192.168.4.20/live/
前端:
rtmpURL: 'rtmp://192.168.4.20/live/'
WebRTC 配置
- 使用 SRS:
whip:
url: http://192.168.4.20:1985/rtc/v1/whip/?app=live&stream=
- 使用 ZLMediaKit:
whip:
url: http://192.168.4.20/index/api/whip?app=live&stream=
播放地址示例:
http://192.168.4.20/index/api/webrtc?app=live&stream=<sn-code>&type=play
问题与解决
MQ 和后端能收到消息,但机场和飞机没有上线
解决方法:
- 前往 MQ 后台将机场客户端踢出。
喊话器功能
无人机需挂载第三方设备(如成至 MP20)。需根据设备接口自行开发。
红外功能
- 无人机自带红外为彩色画面。
- 如需黑白画面,需使用 司空2 平台更改镜头参数。
一键起飞
- 填写指定参数。
- 海拔必须高于当前机场。
后端枚举类报错
- 可能是固件版本不匹配导致。
- 建议使用 1.10 对应的固件。
固件一致性升级
- 如未使用新功能,可忽略升级提示。
- 调整固件版本可使用 DJA2 工具。
直播推流
大疆机场 2 支持推流:
- 仓内、仓外、无人机(共 3 路流)。
航线功能
- 可使用手柄或司空2绘制航线并导入。
悬停功能
可使用以下接口实现自动悬停流程:
- AI 识别
- 悬停
- 喊话
- 取消悬停继续航线