对接大疆上云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"
相关推荐
shoubepatien22 分钟前
JAVA -- 11
java·后端·intellij-idea
利剑 -~37 分钟前
jdk源码解析
java·开发语言
Predestination王瀞潞43 分钟前
JDK安装及环境变量配置
java·linux·开发语言
谷哥的小弟1 小时前
Spring Framework源码解析——PropertiesLoaderUtils
java·后端·spring·框架·源码
JIngJaneIL1 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
q_19132846951 小时前
基于Springboot+MySQL+RuoYi的会议室预约管理系统
java·vue.js·spring boot·后端·mysql·若依·计算机毕业设计
元气满满-樱2 小时前
Tomcat理论
java·tomcat
一只叫煤球的猫2 小时前
从夯到拉,锐评13个Java Web框架
java·后端·程序员
heartbeat..2 小时前
JUC 在实际业务场景的落地实践
java·开发语言·网络·集合·并发
tryxr2 小时前
线程安全的类 ≠ 线程安全的程序
java·开发语言·vector·线程安全