对接大疆上云api---实现直播效果

最近开发无人机需要通过大疆的上云api对接到无人机,但是发现无人机对接时,使用rtmp流进行播放实时画面时无法转成webrtc与大疆前端进行交互sdp,查看之后发现大疆在点击play后,会请求一个

复制代码
http://ip:port/rtc/v1/play/

这个ip是目标流媒体服务器的ip,也就是说我们需要搭建流媒体服务器,很出名的就是ZLM了,但是它是基于c++的,对于我这个javalearner,操作起来还是有很大困难的👿。然后发现了ZLM4J,这个大佬讲zlm进行封装以api的方式进行调用,这个就很对我的胃口了😄,然后发现里面也是一些封装...看不懂。后面又发现了JMediaServer,这个就更好了,完全springboot项目,只需要调用接口就可以,启动起来就是流媒体服务器。不需要像原来一样要搭建ZLMediaKit和ffmpeg了,也不要什么乱七八糟的配置,直接启动项目!!!!

启动后发现

直接初始化启动了RTSP、RTMP、WEBRTC

然后就是重点了!!!!

==============================================================

==============================================================

一、分析大疆上云api的后台逻辑

复制代码
manage/api/v1/live/streams/start

代码里最终 会将rtmp的url中的rtmp替换为webrtc,也就是返回的url格式就是

复制代码
webrtc://ip:7935/live/test

二、大疆得到rtmp的流后会调用一个接口

http://ip:port/rtc/v1/play/ ,也就是说这个才是流媒体交互的sdp。这时候只需要改一下前端,别让它继续访问7935的端口了,让它访问我们流媒体启动端口例如8898,然后在流媒体服务器重新写一个接口

复制代码
    /**
     * 对应大疆无人机视频推拉流
     * @param pcSdp
     * @return
     * @throws IOException
     */
    @ApiOperation(value = "【webrtc】sdp协议交换")
    @PostMapping("/rtc/v1/play/")
    public DeferredResult<ResponseEntity<String>> webrtc2(@RequestBody webrtcParam pcSdp) throws IOException {
        String app = "live";
        String stream = "test2";
        String type = "play";
        String sdp = pcSdp.getSdp();
        DeferredResult<ResponseEntity<String>> out = new DeferredResult<>();
        //webrtc使用的是udp,默认监听8000,不需要设置端口号
        String rtcUrl = StrUtil.format("rtc://{}:{}/{}/{}", config.getRtc_host(), config.getRtc_port(), app, stream);
        IMKWebRtcGetAnwerSdpCallBack imkWebRtcGetAnwerSdpCallBack = createWebrtcAnswerSdpCallback(out);
        ZLM_API.mk_webrtc_get_answer_sdp(null, imkWebRtcGetAnwerSdpCallBack, type, sdp, rtcUrl);
        return out;
    }

先写死测试。。。。。。。

三、开始拉流

掉一下流媒体服务器上的接口

发现这个rtmp就是我们上面大疆返回的url地址,不需要管是webrtc还是rtmp,因为后台逻辑是已经转好了的

四、最后点击一在上云api的 play!!!!

就可以看到直播画面了。

如果没有无人机或者摄像头,就更简单了,直接下载一个ffmpeg,然后就直接将一个本地视频文件推到rtmp服务器就行了。

复制代码
ffmpeg -re -i "F:\tbd\drone\\test.mp4" -c copy -f flv -flvflags no_duration_filesize "rtmp://127.0.0.1:7935/live/test2"
相关推荐
阿丰资源7 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
呱牛do it7 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 8)
java
消失的旧时光-19438 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
NE_STOP8 小时前
Redis--发布订阅命令和Redis事务
java
PAC_3Dame8 小时前
记一次真实的线上OOM
java
SunnyDays10119 小时前
如何在Java中将Word文档转换为图像(JPEG、PNG或SVG)
java
Lumos_7779 小时前
Linux -- 线程
java·jvm·算法
知兀9 小时前
【MybatisPlus】后端用枚举类,数据库用tinyint,存在枚举类型转换
java
StockTV9 小时前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
User_芊芊君子9 小时前
【OpenAI 把 AI 玩明白了】:自主推理 + 动态知识图谱,这 4 个技术突破要颠覆行业
java·人工智能·知识图谱