大疆无人机RTMP推流直播至Windows电脑完整成功实操教程
目录
本教程为Windows系统实测成功案例,全程无中文路径、无配置报错,完整实现 Nginx-RTMP服务搭建→FFmpeg测试推流→大疆无人机实时RTMP推流→Python读取无人机实时视频流 全流程,适配大疆消费级无人机(Mini、Air、Mavic系列)。
一、所需资源(实测可用版本)
所有工具均为Windows 10/11适配版本,杜绝版本不兼容问题:
nginx-Gryphon(1.7.11.3版本):已预编译RTMP模块,无需手动编译,开箱即用
stat.xsl:Nginx-RTMP状态监控文件,用于查看推流状态、排查断流问题
FFmpeg(full版本):完整编解码工具,用于测试推流、转码适配无人机视频流
VLC媒体播放器:免费开源,用于拉取RTMP流、实时预览无人机画面
Python3.8+:用于代码读取、解析无人机实时视频流
大疆DJI Fly App:无人机配套控制软件(手机/平板端,开启RTMP推流核心工具)
二、环境安装与Nginx-RTMP核心配置(关键步骤)
2.1 Nginx解压与路径规范(必看避坑)
严格遵循路径规则,全程无中文、无空格、无特殊符号,否则服务启动失败、推流黑屏。
将下载的 nginx 1.7.11.3 Gryphon 压缩包解压,重命名文件夹为
nginx-1.7.11.3-Gryphon将文件夹放置在纯英文根目录,推荐路径:
D:\nginx-1.7.11.3-Gryphon将下载的
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服务
按下
Win+R输入cmd,打开命令提示符,进入Nginx根目录:cd D:\nginx-1.7.11.3-Gryphon执行启动命令:
nginx.exe验证启动成功:浏览器访问
http://localhost:8080/stat,页面正常显示RTMP服务状态即启动成功

避坑提示:若启动失败,大概率是1935/8080端口被占用,可关闭占用程序或修改配置文件端口。
2.4 FFmpeg环境配置
解压FFmpeg压缩包,进入
bin目录,复制路径右键「此电脑」→属性→高级系统设置→环境变量→系统变量,编辑
Path新建条目,粘贴FFmpeg bin目录路径,保存确认
CMD输入
ffmpeg -version,输出版本信息即环境配置成功
三、FFmpeg本地推流测试(验证服务可用)
正式无人机推流前,先通过FFmpeg测试Nginx-RTMP服务是否正常,排除服务故障。
新建CMD窗口,执行测试推流命令(推送本地视频循环流):
ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1:1935/live/dji01打开VLC播放器,点击「媒体→打开网络串流」,输入拉流地址:
rtmp://127.0.0.1:1935/live/dji01点击播放,正常播放视频画面则证明 RTMP推流+拉流链路完全正常

参数说明:dji01 为自定义流ID,后续无人机推流、Python取流需保持一致
四、大疆无人机RTMP实时推流(核心实操)
确保无人机、遥控器、电脑连接同一局域网WiFi,关闭电脑防火墙、杀毒软件,避免拦截推流。
4.1 设备连接准备
开机无人机、遥控器,手机连接遥控器WiFi,打开DJI Fly App,进入飞行界面
确认电脑局域网IP(CMD输入
ipconfig,查看本机IPv4地址,例:192.168.1.100)

4.2 App开启RTMP推流
DJI Fly App 进入「设置→直播设置→自定义RTMP推流」
关闭平台默认直播,手动输入推流地址:
rtmp://电脑IPv4:1935/live/dji01(例:rtmp://192.168.1.100:1935/live/dji01)点击「开始直播」,App提示「直播推流成功」

4.3 电脑VLC实时预览无人机画面
打开VLC,输入网络串流地址:
rtmp://127.0.0.1:1935/live/dji01点击播放,1-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 运行效果
运行代码,控制台提示「无人机实时视频流读取成功」
弹出窗口实时显示无人机航拍画面,延迟与VLC一致(1-3秒)
支持自定义截图、录制视频、AI识别二次开发
六、常见问题排查(实测报错解决)
Nginx启动闪退:路径含中文/空格、1935端口占用,修改路径或关闭占用端口程序
App推流失败:电脑与设备不在同一局域网、防火墙拦截、流ID不统一
VLC黑屏无画面:推流未成功、地址输入错误,刷新Nginx状态页排查
Python读取不到流:无人机未开启推流、网络延迟,重启推流服务与代码
七、最终成功效果总结
| 1. | Nginx-RTMP服务正常运行,状态页面可监控推流数据 |
| 2. | 大疆无人机成功推送实时视频流至Windows电脑 |
| 3. | VLC播放器流畅预览航拍画面,低延迟无卡顿 |
| 4. | Python代码稳定读取视频帧,支持后续二次开发 |
更多推荐
所有评论(0)