目录

一、所需资源(实测可用版本)

二、环境安装与Nginx-RTMP核心配置(关键步骤)

2.1 Nginx解压与路径规范(必看避坑)

2.2 Nginx.conf完整配置(实测可用)

2.3 启动Nginx-RTMP服务

2.4 FFmpeg环境配置

三、FFmpeg本地推流测试(验证服务可用)

四、大疆无人机RTMP实时推流(核心实操)

4.1 设备连接准备

4.2 App开启RTMP推流

4.3 电脑VLC实时预览无人机画面

五、Python获取无人机实时视频流(代码实测可用)

5.1 依赖库安装

5.2 完整取流代码(实测无报错)

5.3 运行效果

六、常见问题排查(实测报错解决)

七、最终成功效果总结


本教程为Windows系统实测成功案例,全程无中文路径、无配置报错,完整实现 Nginx-RTMP服务搭建→FFmpeg测试推流→大疆无人机实时RTMP推流→Python读取无人机实时视频流 全流程,适配大疆消费级无人机(Mini、Air、Mavic系列)。

一、所需资源(实测可用版本)

所有工具均为Windows 10/11适配版本,杜绝版本不兼容问题:

  1. nginx-Gryphon(1.7.11.3版本):已预编译RTMP模块,无需手动编译,开箱即用

  2. stat.xsl:Nginx-RTMP状态监控文件,用于查看推流状态、排查断流问题

  3. FFmpeg(full版本):完整编解码工具,用于测试推流、转码适配无人机视频流

  4. VLC媒体播放器:免费开源,用于拉取RTMP流、实时预览无人机画面

  5. Python3.8+:用于代码读取、解析无人机实时视频流

  6. 大疆DJI Fly App:无人机配套控制软件(手机/平板端,开启RTMP推流核心工具)

二、环境安装与Nginx-RTMP核心配置(关键步骤)

2.1 Nginx解压与路径规范(必看避坑)

严格遵循路径规则,全程无中文、无空格、无特殊符号,否则服务启动失败、推流黑屏。

  1. 将下载的 nginx 1.7.11.3 Gryphon 压缩包解压,重命名文件夹为 nginx-1.7.11.3-Gryphon

  2. 将文件夹放置在纯英文根目录,推荐路径:D:\nginx-1.7.11.3-Gryphon

  3. 将下载的 stat.xsl 文件复制到 Nginx 根目录的 conf 文件夹内

2.2 Nginx.conf完整配置(实测可用)

进入 conf 文件夹,新建/编辑 nginx.conf 文件,删除原有默认内容,粘贴以下完整配置(包含RTMP推流、状态监控、HLS兼容,适配无人机视频流):

# 全局配置
worker_processes  1;
error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

# RTMP流媒体核心配置
rtmp {
    server {
        # RTMP默认推流端口1935,确保端口未被占用
        listen 1935;
        chunk_size 4096;

        # 无人机直播流应用名称(后续推流地址必须对应live)
        application live {
            live on;                # 开启实时直播模式
            hls on;                 # 兼容HLS拉流
            hls_path temp/hls;      # 临时流文件存储目录
            max_connections 1024;   # 最大连接数
        }
    }
}

# HTTP服务(用于状态监控)
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        # RTMP服务器状态监控页面
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root conf/;
        }
    }
}

2.3 启动Nginx-RTMP服务

  1. 按下 Win+R 输入 cmd,打开命令提示符,进入Nginx根目录: cd D:\nginx-1.7.11.3-Gryphon

  2. 执行启动命令:nginx.exe

  3. 验证启动成功:浏览器访问 http://localhost:8080/stat,页面正常显示RTMP服务状态即启动成功

避坑提示:若启动失败,大概率是1935/8080端口被占用,可关闭占用程序或修改配置文件端口。

2.4 FFmpeg环境配置

  1. 解压FFmpeg压缩包,进入 bin 目录,复制路径

  2. 右键「此电脑」→属性→高级系统设置→环境变量→系统变量,编辑 Path

  3. 新建条目,粘贴FFmpeg bin目录路径,保存确认

  4. CMD输入 ffmpeg -version,输出版本信息即环境配置成功

三、FFmpeg本地推流测试(验证服务可用)

正式无人机推流前,先通过FFmpeg测试Nginx-RTMP服务是否正常,排除服务故障。

  1. 新建CMD窗口,执行测试推流命令(推送本地视频循环流): ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1:1935/live/dji01

  2. 打开VLC播放器,点击「媒体→打开网络串流」,输入拉流地址: rtmp://127.0.0.1:1935/live/dji01

  3. 点击播放,正常播放视频画面则证明 RTMP推流+拉流链路完全正常

参数说明dji01 为自定义流ID,后续无人机推流、Python取流需保持一致

四、大疆无人机RTMP实时推流(核心实操)

确保无人机、遥控器、电脑连接同一局域网WiFi,关闭电脑防火墙、杀毒软件,避免拦截推流。

4.1 设备连接准备

  1. 开机无人机、遥控器,手机连接遥控器WiFi,打开DJI Fly App,进入飞行界面

  2. 确认电脑局域网IP(CMD输入ipconfig,查看本机IPv4地址,例:192.168.1.100)

4.2 App开启RTMP推流

  1. DJI Fly App 进入「设置→直播设置→自定义RTMP推流」

  2. 关闭平台默认直播,手动输入推流地址: rtmp://电脑IPv4:1935/live/dji01(例:rtmp://192.168.1.100:1935/live/dji01

  3. 点击「开始直播」,App提示「直播推流成功」

4.3 电脑VLC实时预览无人机画面

  1. 打开VLC,输入网络串流地址:rtmp://127.0.0.1:1935/live/dji01

  2. 点击播放,1-3秒延迟即可看到无人机实时航拍画面,无黑屏、无卡顿即推流成功

  3. 可刷新Nginx状态页面 http://localhost:8080/stat,查看在线推流设备、码率、帧率

五、Python获取无人机实时视频流(代码实测可用)

通过Python读取RTMP视频流,实现画面抓取、帧保存、实时预览,可用于二次开发(画面识别、视频录制等)。

5.1 依赖库安装

CMD执行安装命令:

pip install opencv-python numpy

5.2 完整取流代码(实测无报错)

import cv2
import numpy as np

# 无人机RTMP推流地址(与前文流ID一致)
rtmp_url = "rtmp://127.0.0.1:1935/live/dji01"

# 初始化视频捕获
cap = cv2.VideoCapture(rtmp_url)

# 设置视频分辨率、帧率(适配无人机画面)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv2.CAP_PROP_FPS, 30)

if not cap.isOpened():
    print("视频流打开失败,请检查推流状态、网络、流地址")
else:
    print("无人机实时视频流读取成功!")
    # 循环读取实时帧
    while True:
        ret, frame = cap.read()
        if not ret:
            print("画面断流,重新连接中...")
            break
        
        # 显示实时画面
        cv2.imshow("DJI Drone Live Stream", frame)
        
        # 按下q退出程序
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

# 释放资源
cap.release()
cv2.destroyAllWindows()

5.3 运行效果

  1. 运行代码,控制台提示「无人机实时视频流读取成功」

  2. 弹出窗口实时显示无人机航拍画面,延迟与VLC一致(1-3秒)

  3. 支持自定义截图、录制视频、AI识别二次开发

六、常见问题排查(实测报错解决)

  1. Nginx启动闪退:路径含中文/空格、1935端口占用,修改路径或关闭占用端口程序

  2. App推流失败:电脑与设备不在同一局域网、防火墙拦截、流ID不统一

  3. VLC黑屏无画面:推流未成功、地址输入错误,刷新Nginx状态页排查

  4. Python读取不到流:无人机未开启推流、网络延迟,重启推流服务与代码

七、最终成功效果总结

成功效果标准
1.Nginx-RTMP服务正常运行,状态页面可监控推流数据
2.大疆无人机成功推送实时视频流至Windows电脑
3.VLC播放器流畅预览航拍画面,低延迟无卡顿
4.Python代码稳定读取视频帧,支持后续二次开发

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐