大疆无人机基于自搭建RTMP服务端推流直播

思路

大疆在手机端提供了软件DJI GO 4控制飞行参数等,其中包含自定义RTMP接口来向第三方推流进行直播业务,而我们可以利用这种直播的思路来完成画面传输。

环境

精灵Phantom 4 Pro V2.0
DJI GO 4(手机端)
win10(PC端)

步骤

一、搭建、启动RTMP服务端

Notice:搭建RTMP服务端主要参考[1]、[2]链接中的步骤。因为我们是通过DJI GO 4来推流,所以其中的ffmpeg步骤可以跳过,只需考虑Nginx的搭建。

  1. http://nginx-win.ecsds.eu/download/下载nginx 1.7.11.3 Gryphon.zip,解压后修改文件夹名称为nginx-1.7.11.3-Gryphon;
  2. 下载nginx-rtmp-module(https://download.youkuaiyun.com/download/liuwen718/13766367),将nginx-rtmp-module-master.zip解压后复制到目录nginx-1.7.11.3-Gryphon下;

     

  3. 在nginx-1.7.11.3-Gryphon\conf\nginx-win.conf文件中增加关于rtmp的设置rtmp { server { listen 1935; chunk_size 4000; application live { live on; } } }
    rtmp {
        server {
            listen 1935;
            chunk_size 4000;
            application live {
                 live on;
            }
        }
    }

     

  4. 打开cmd,进入nginx-1.7.11.3-Gryphon所在目录,运行:
    nginx.exe -c conf\nginx-win.conf

    此时,RTMP服务端已启动。

    如果要关闭服务端:

    nginx.exe -s stop      # 快速停止

    nginx.exe -s quit       #完整有序的停止

    二、设置DJI GO 4

1、手机端下载软件DJI GO 4(https://www.dji.com/cn/downloads/djiapp/dji-go-4),打开软件进行注册、登录等操作;

2、启动遥控器、无人机,用数据线连接遥控器和手机,打开DJI GO 4进入精灵4 Pro V2.0对应页面,如果设备正常连接则显示“开始飞行”图标;

3、点击“开始飞行”进入配置页面,右上角的通用设置中选择直播平台中的自定义直播,在其中填入rtmp地址:rtmp://192.168.x.xxx:1935/live/home(ip根据实际情况填写),设置完成后,开启直播;

4、在电脑端可安装VLC(https://www.videolan.org/vlc/)打开网络串流,填入rtmp://192.168.x.xxx:1935/live/home播放。

大疆无人机在使用 RTMP 协议进行直播时可能会出现延迟问题,延迟通常受到网络带宽、编码参数、服务器配置以及播放端处理方式等多方面因素影响。以下是一些常见的优化策略和解决方法: ### 1. 调整编码参数 - **降低视频分辨率或码率**:高分辨率和高码率会增加数据传输量,可能导致网络拥塞。适当降低分辨率或码率可以减少数据量,从而降低延迟[^1]。 - **使用更高效的编码格式**:例如将 H.264 改为 H.265(HEVC),可以在保持画质的同时减少带宽需求。 ### 2. 优化网络环境 - **确保稳定的网络连接**:使用 5G 或高质量 Wi-Fi 网络,避免信号干扰和丢包问题。如果使用移动数据,尽量选择信号强的区域进行直播。 - **使用有线连接**:在可能的情况下,使用以太网连接而不是无线连接,以获得更稳定的网络性能。 ### 3. 服务器端优化 - **选择低延迟的媒体服务器**:例如使用支持低延迟模式的 SRS(Simple Realtime Server)或 Nginx with RTMP module。SRS 提供了低延迟和播放的功能,适合对延迟要求较高的场景[^3]。 - **启用低延迟模式**:某些服务器支持特定的低延迟配置,例如在 SRS 中启用 `low_latency` 模式,可以显著减少延迟。 ### 4. 播放端优化 - **使用低延迟播放器**:例如 WebRTC 或低延迟 HLS(LL-HLS)播放器,相比传统的 HLS 或 RTMP 播放器,可以显著降低播放延迟[^2]。 - **禁用播放器缓冲**:部分播放器默认会启用缓冲机制以保证播放畅性,但这也增加了延迟。可以通过配置播放器禁用或减少缓冲时间。 ### 5. 权限与系统优化 - **确保权限正确配置**:在 Android 设备上使用大疆 SDK 进行开发时,确保在 `Manifest.xml` 中正确声明了摄像头和网络权限,并在运行时动态申请权限,必要时手动在系统设置中开启权限[^2]。 - **优化应用性能**:减少应用内的其他资源占用,如 CPU 和内存使用率,确保过程不会受到其他任务的干扰。 ### 6. 使用更高效的传输协议 - **尝试 WebRTC 协议**:WebRTC 是专为低延迟实时通信设计的协议,适用于需要接近实时交互的直播场景。根据实际测试,使用 WebRTC 拉播放时延迟可以控制在 1 秒以内。 ### 示例代码:使用 FFmpeg 到 SRS 服务器 ```bash ffmpeg -re -i input.mp4 -c:v h264 -b:v 2048k -s 1280x720 -f flv rtmp://your_srs_server/live/stream ``` ### 示例代码:使用 WebRTC 拉(基于 JavaScript) ```javascript const peerConnection = new RTCPeerConnection(); peerConnection.ontrack = event => { const videoElement = document.getElementById('remoteVideo'); videoElement.srcObject = event.streams[0]; }; // 接收 offer 并生成 answer const offer = await signalingChannel.receiveOffer(); await peerConnection.setRemoteDescription(offer); const answer = await peerConnection.createAnswer(); await peerConnection.setLocalDescription(answer); signalingChannel.sendAnswer(answer); ```
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值