大疆上云API+流媒体服务器部署实现直播功能
根据官网文档上云API,先将官方提供的Demo部署起来,后端和前端服务环境搭建请参考官方文档。因为官方文档没有对直播这块的环境搭建进行说明,所以下面主要对直播功能环境搭建做一个记录,仅供参考,如有不足之处,请评论区留言哦!
根据官方的文档我们先把Demo部署起来,Mysql数据库、Redis缓存、EMQX消息服务器安装起来。然后将前后端源码下载到本地,配置好前后端项目配置文件,保证Demo正常运行,浏览器正常访问。接下来再看看直播功能...
直播功能主要是把无人机相机负载和大疆机场的视频码流发给第三方云平台进行播放,用户可以方便的在远程web页面点击直播。直播功能支持直播的开始、停止、清晰度设置、镜头切换。
下面是我截取的官方对直播总体框架介绍图,红色文字方便理解加上去的。要实现的直播功能就是需要我们单独部署流媒体服务负责对设备的推流进行接收和处理(转协议、鉴权等)。
流媒体服务器百度了解了有一些好用的开源项目,如使用mediamtx、ZLMediaKit进行搭建,也有很多文章关于搭建流媒体服务的介绍。因为考虑到后期流媒体服务最好能集成到后端项目中,使用Gitee上一个Java版开源的流媒体服务器项目——zlm4j。
zlm4j 是一个基于 ZLMediaKit 的 Java 封装库,旨在为 Java 开发者提供一个简单易用的流媒体服务框架。通过 JNA(Java Native Access)技术,zlm4j 成功地将 ZLMediaKit 的 C API 封装为 Java API,使得开发者可以在 Java 项目中轻松集成流媒体服务功能,无需额外部署流媒体服务器。
作者还提供了zlm4j集成示例Demo——j-media-server,直接下载这个示例项目部署就行了。
拖大佬的福项目成功运行,简直太顺利了!到这里流媒体服务器我们就有了,下面就是在大疆给的前后端项目配置文件配置好流媒体服务的相关配置。
大疆的Demo这里如果是rtmp协议才需要搭建流媒体服务器,并且配置该协议流媒体服务地址,如果是rtsp协议,直接配置用户名、密码和端口号。配置完成所有服务该启动的启动好,如果已经连接上设备的就可以去直播模块测试直播功能了。如果和我一样没有设备的,可以使用FFmpeg 工具模拟设备推流,然后修改一下大疆的Demo中的接口,看一下拉流播放功能。
rtmp协议推流
ffmpeg -re -i "C:\Users\Administrator\Desktop\test.mp4" -c copy -f flv "rtmp://192.168.0.188:7935/live/test"
如果和我一样动态的显示推流动作,说明往服务器推流成功,不要关闭窗口。
修改大疆Demo项目前端后端代码,前端设备必选放行请求接口,后端接口直接返回成功推流的响应。
播放效果