当前位置: 首页 > news >正文

对接大疆上云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"

http://www.dtcms.com/a/577332.html

相关文章:

  • ffmpeg学习记录
  • 建站网站破解版什么是网站建设需求分析
  • Lua 面向对象编程完全指南:从元表到私密性,解锁灵活封装技巧
  • linux用户及权限管理
  • 北京手机网站建设外包WordPress里面自定义功能
  • 网站建设怎么更改图片网站服务器建设合同
  • 快速理解卷积神经网络CNN
  • IPD PDT 核心组成员来源及扩展组配置说明
  • 51项目分享:基于51单片机仓库环境检测系统
  • Vivado 2015在WIN11电脑综合一直卡在Translating synthesized netlist不动。
  • 绘制软件的状态机图
  • 基于python与streamlit构建的内网聊天应用
  • 对于数据结构:堆的超详细保姆级解析—上
  • linux网站建设论文针对网站做搜索引擎做优化
  • 基于超像素和基于图论的图像分割方法
  • 【算法训练营 · 补充】LeetCode Hot100(中)
  • 新能源网站开发网站没有做301定向
  • 【Ubuntu】新服务器配置完全指南
  • 2026年PMI-PBA商业分析师报考时间+条件全解析
  • 计算机图形学·9 几何学
  • 基于MATLAB的梯度下降法实现
  • dw制作简单网站模板下载网站建设工作会议讲话
  • 如何优化多表查询sql?
  • 64QAM信号的数字预失真处理(MATLAB实现)
  • 网站模板下载之后如何修改公司官网怎么设计
  • 崇信县门户网站留言首页杭州做商务网站
  • 只出现一次的数字 II(二)
  • Linux系统编程:(六)深入理解 Linux 软件包管理器——从原理到 yum 实战全攻略
  • NoSql数据库概念
  • OCR 新范式!DeepSeek 以「视觉压缩」替代传统字符识别;Bald Classification数据集助力高精度人像分类