1. 环境准备与Nginx-RTMP服务器搭建

第一次尝试用大疆无人机做直播推流时,我踩了不少坑。最头疼的就是在Windows上搭建RTMP服务器,网上教程要么太老,要么步骤不全。折腾了两天后终于跑通,现在把完整流程分享给大家。

1.1 软件下载与安装

推荐使用nginx 1.7.11.3 Gryphon这个特殊版本,它已经预编译了Windows支持,比从源码编译省事很多。下载后解压到C盘根目录,我习惯重命名为nginx-rtmp方便后续操作。注意路径不要有中文和空格,否则后面启动会报错。

接着需要nginx-rtmp-module模块,从GitHub官方仓库下载最新版。解压后直接把整个文件夹放到nginx主目录下,不需要单独编译。这里有个细节:模块文件夹名称建议改为nginx-rtmp-module,避免后续配置时路径太长。

1.2 关键配置修改

打开conf目录下的nginx-win.conf文件,在http区块后面添加这段核心配置:

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            allow publish all;
            allow play all;
        }
    }
}

几个容易出问题的地方:

  1. chunk_size建议设为4096,大疆无人机的视频流数据块较大
  2. allow publish和allow play要明确设置,否则会有权限问题
  3. 配置末尾的分号经常被漏掉,会导致服务启动失败

1.3 服务启动与测试

在nginx目录打开cmd,运行start nginx.exe -c conf\nginx-win.conf。这里建议用start命令启动,这样cmd窗口不会阻塞。验证服务是否正常:

tasklist /fi "imagename eq nginx.exe"

看到两个nginx进程说明启动成功。浏览器访问localhost能看到欢迎页,但更准确的测试方法是:

ffmpeg -list_devices true -f dshow -i dummy

这个命令会列出可用的视频设备,确认RTMP服务已注册。

2. 大疆无人机端配置

2.1 网络环境准备

实测发现,用手机热点比路由器更稳定。建议先用手机开热点,让电脑和遥控器都连接这个热点。关键是要确保三者在同一网段:

  1. 电脑cmd运行ipconfig记下IPv4地址
  2. 遥控器设置里查看Wi-Fi详情
  3. 无人机和遥控器保持正常连接

2.2 直播参数设置

以Mavic 3为例操作流程:

  1. 进入相机设置 → 图传 → 自定义直播
  2. 服务器地址填rtmp://电脑IP:1935/live
  3. 流密钥填任意名称如drone1
  4. 分辨率建议选720p,码率设为4Mbps

常见问题排查:

  • 如果提示"推流失败",先检查电脑防火墙是否放行1935端口
  • 延迟太高可以尝试关闭无人机端的"低延迟"模式
  • 画面卡顿可以降低分辨率或码率

3. VLC播放器配置技巧

3.1 基础播放设置

VLC播放器建议用3.0以上版本。播放时选择"媒体 → 打开网络串流",输入地址:

rtmp://电脑IP:1935/live/drone1

高级技巧:

  • 在"工具 → 偏好设置"中开启"跳过H.264解码器"可以降低延迟
  • 网络缓存建议设为300ms
  • 启用"硬解码"能减少CPU占用

3.2 延迟优化方案

默认配置下延迟可能有3-5秒,通过以下调整可以压缩到1秒内:

  1. 修改nginx配置增加低延迟参数:
application live {
    live on;
    interleave on;
    wait_key on;
    wait_video on;
    publish_notify on;
    drop_idle_publisher 5s;
}
  1. VLC播放参数添加:live-caching=150
  2. 无人机端关闭所有图像增强功能

4. 常见问题解决方案

4.1 推流中断问题

遇到推流突然中断时,按这个顺序排查:

  1. 检查nginx错误日志logs/error.log
  2. 确认无人机信号强度,图传质量低于50%时容易断流
  3. 电脑资源占用情况,特别是CPU和网络使用率
  4. 尝试更换RTMP流密钥名称

4.2 画面花屏处理

花屏通常由解码问题引起,解决方法:

  1. 更新VLC到最新版
  2. 在nginx配置中添加:
application live {
    # ...原有配置...
    hls_cleanup on;
    hls_fragment 1s;
    hls_playlist_length 3s;
}
  1. 无人机端关闭HDR和LOG模式

4.3 多客户端接入方案

如果需要多个设备同时观看:

application live {
    live on;
    record off;
    push rtmp://备用服务器IP:1935/backup;  # 中继推流
    push rtmp://localhost:1935/hls;  # 转HLS流
}

HLS流可以用以下地址播放:

http://电脑IP:8080/hls/drone1.m3u8

这个方案适合手机等移动设备观看,延迟会增加到10秒左右,但兼容性更好。

Logo

邀请您加入社区

更多推荐