方案概览
| 方案 | 推荐人群 | 优点 | 缺点 | 部署难度 |
|---|---|---|---|---|
| Nginx with RTMP Module | 开发者、技术人员、有一定命令行基础的用户 | 性能高、稳定、功能强大、社区活跃 | 需要手动编译或使用预编译版本,配置稍复杂 | 中等 |
| Ant Media Server | 企业用户、需要完整Web管理界面的用户、SRT/WHIP协议支持者 | 图形化界面、功能丰富(WebRTC、HLS、DASH)、易于管理 | 免费版有并发数限制,商业版收费 | 简单 |
| SRS (Simple RTMP Server) | 追求高性能和稳定性的专业用户 | C++编写、性能极高、功能强大、支持多种协议 | 配置相对复杂,社区和文档相比Nginx略少 | 中等 |
| EasyDarwin | 安防监控、需要GB28181等特定协议的用户 | 轻量级、专注安防流媒体协议 | 功能相对单一,不如其他方案通用 | 简单 |
对于大多数 Windows 用户,我首推【Nginx with RTMP Module】,因为它最经典、最稳定、资料也最多。

使用 Nginx + RTMP 模块(最推荐)
这是目前最流行、最经典的组合,Nginx 是一个高性能的 Web 服务器和反向代理服务器,通过添加 nginx-rtmp-module 模块,它就具备了 RTMP 服务的能力。
第一步:下载软件
-
下载 Nginx for Windows:
- 访问 Nginx 官方 Windows 下载页面:http://nginx.org/en/download.html
- 下载最新的
Mainline version(主线版) 的.zip压缩包。nginx-1.25.3.zip。
-
下载 RTMP 模块:
- 访问 GitHub 仓库:https://github.com/arut/nginx-rtmp-module
- 点击
Code->Download ZIP,下载整个项目并解压,记下这个解压后的路径,后面会用到。
第二步:编译 Nginx (或使用预编译版)
方法A:使用预编译好的 Nginx (强烈推荐,无需编译) 为了方便,很多开发者已经将 RTMP 模块编译进了 Nginx,你可以直接下载这些预编译版本。

- 推荐下载地址:https://nginx.org/en/download.html (官方版本不含RTMP模块)
- 更推荐使用第三方编译的版本,https://github.com/illuspas/nginx-rtmp-win32
- 在该页面找到
Releases,下载最新版的.zip文件,这个版本已经内置了 RTMP 模块和一些其他常用模块,可以直接使用。
- 在该页面找到
方法B:从源码编译 (需要安装 Visual Studio 和 CMake) 如果你追求完全的掌控,可以自己编译。
-
安装 Visual Studio (推荐 2025 或 2025 社版,安装时勾选 "使用C++的桌面开发")。
-
安装 CMake: https://cmake.org/download/
-
打开
x64 Native Tools Command Prompt for VS 2025命令行工具。
(图片来源网络,侵删) -
执行以下命令:
# 1. 创建一个编译目录 mkdir C:\nginx-rtmp-build cd C:\nginx-rtmp-build # 2. 下载 Nginx 源码 # 你可以使用 git 或者直接从官网下载zip解压 git clone https://github.com/nginx/nginx.git cd nginx # 3. 配置编译参数 # 将 C:\path\to\nginx-rtmp-module 替换为你解压的RTMP模块的实际路径 .\buildconf.bat configure --prefix=C:\nginx-rtmp-build\nginx --add-module=C:\path\to\nginx-rtmp-module --with-visual-studio-version=17 # 4. 编译 nmake
编译完成后,
nginx-rtmp-build\nginx目录下就是编译好的 Nginx。
第三步:配置 RTMP 服务器
我们以使用预编译版为例。
- 将下载的预编译版 Nginx
.zip文件解压到一个固定路径,D:\nginx-rtmp。 - 进入
conf目录,找到nginx.conf文件,用记事本或 VS Code 等文本编辑器打开。 - 在文件末尾添加 RTMP 服务器配置。注意:不要在 HTTP 块里添加 RTMP 配置,它们是并列的。
# 在 http 块的后面,文件末尾,添加如下配置
# RTMP Server Configuration
rtmp {
server {
listen 1935; # RTMP默认端口
chunk_size 4096;
# 定义一个名为 'live' 的应用
application live {
live on; # 启用直播模式
record off; # 不录制直播流
# 推流认证 (可选)
# on_publish http://localhost:8080/auth; # 推流时请求此URL进行鉴权
# HLS 配置,用于将RTMP流转换为HLS流,方便网页播放
hls on;
hls_path D:/nginx-rtmp/hls; # HLS切片存放路径
hls_fragment 3s; # 每个切片时长
hls_playlist_length 60s; # 播放列表时长
}
# 定义一个名为 'vod' 的应用,用于点播
application vod {
play /vod; # 播放路径,推流地址为 rtmp://server_ip/vod/mp4:filename.mp4
}
}
}
# HTTP Server Configuration (用于提供HLS播放页面和API)
http {
server {
listen 80;
location / {
# 提供一个简单的HTML页面用于测试播放
root html;
index index.html index.htm;
}
location /hls {
# 用于播放HLS流
types {
application/vnd.apple.mpegurl m3u8;
video/mp4 mp4;
}
alias D:/nginx-rtmp/hls; # 指向HLS切片存放路径
add_header Cache-Control no-cache;
add_header 'Access-Control-Allow-Origin' '*' always; # 允许跨域
}
# RTMP 统计页面 (可选)
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /path/to/nginx-rtmp-module/;
}
}
}
配置说明:
listen 1935: RTMP 服务器监听的端口。application live: 定义了一个名为live的直播应用,你的推流地址就是rtmp://你的电脑IP/live。hls on: 启用 HLS 转码,推流后,Nginx 会自动将 RTMP 流转换成 HTTP Live Stream (m3u8 和 ts 文件),这样就可以在支持 HLS 的播放器(如 video.js, hls.js)中播放了。hls_path: HLS 文件的存储目录,请确保此目录存在且有写入权限。
第四步:启动服务器和测试
-
启动 Nginx:
- 打开命令提示符 (CMD),进入 Nginx 解压目录的
nginx-rtmp文件夹。 - 执行命令:
nginx.exe - 如果没有弹出任何窗口,说明启动成功,如果端口被占用,会提示错误,可以通过
tasklist | findstr nginx查看进程。
- 打开命令提示符 (CMD),进入 Nginx 解压目录的
-
测试推流 (使用 OBS Studio):
- 下载并安装 OBS Studio: https://obsproject.com/
- 打开 OBS,在“来源”面板点击 号,选择“媒体源”或“游戏 capture”等添加一个视频源。
- 在 OBS 右下角的“设置”中,进入“推流”选项卡。
- 服务选择“自定义...”。
- 服务器填入:
rtmp://127.0.0.1/live(如果推送到另一台电脑,请用那台电脑的IP地址)。 - 推流密钥填入:
mystream(这个是任意字符串,对应配置文件中的application live,Nginx 不会验证密钥)。 - 点击“开始推流”。
-
测试播放:
- 使用 VLC Media Player:
- 打开 VLC,选择 "媒体" -> "打开网络串流" (Ctrl+N)。
- 在 URL 栏输入:
rtmp://127.0.0.1/live/mystream - 点击播放,应该就能看到你推流的画面了。
- 使用网页播放 HLS 流:
- 在 Nginx 的
html目录下创建一个index.html文件,内容如下:<!DOCTYPE html> <html> <head> <title>RTMP/HLS Player</title> <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> </head> <body> <video id="video" controls></video> <script> var video = document.getElementById('video'); if(Hls.isSupported()) { var hls = new Hls(); hls.loadSource('http://127.0.0.1/hls/mystream.m3u8'); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED,function() { video.play(); }); } </script> </body> </html> - 用浏览器打开这个
index.html文件,即可看到播放器并开始播放直播。
- 在 Nginx 的
- 使用 VLC Media Player:
使用 Ant Media Server (图形化界面)
如果你不想碰配置文件,希望有一个可视化的管理界面,Ant Media Server 是绝佳选择。
步骤:
- 下载: 访问 Ant Media Server 官网 https://antmedia.io/,下载 Windows 版本,它提供免费版(有100个并发流的限制)和付费版。
- 安装: 解压下载的
.zip文件,运行ant-media-server.bat。 - 启动: 服务器会自动启动,并打开一个命令行窗口显示日志,默认情况下,它会启动在 5080 端口。
- Web 管理界面: 打开浏览器,访问
http://localhost:5080(如果服务器在其他电脑,请用对应IP)。 - 配置和推流:
- 登录后,在左侧菜单找到 "Stream Targets" 或 "Applications"。
- 它会自动创建一个名为
live的应用。 - 推流地址在 Web 界面中会明确告诉你,通常是
rtmp://[你的IP]:1935/live/STREAM_NAME,你可以在后台设置一个默认的推流密钥。 - 播放地址同样在界面中提供,会给出 RTMP、HLS、WebRTC 等多种格式的播放 URL。
Ant Media Server 的优势在于开箱即用和强大的功能集,但灵活性不如 Nginx。
使用 SRS (Simple RTMP Server)
SRS 是一个用 C++ 编写的高性能 RTMP 服务器,在直播行业有很好的口碑。
步骤:
- 下载: 访问 SRS 官网 https://ossrs.io/cn/,下载 Windows 版本的二进制包。
- 安装: 解压到任意目录,如
D:\srs。 - 配置: 编辑
conf\conf.json文件,可以参考官方文档修改默认的1935端口和live应用等。 - 启动: 在命令行中进入
srs目录,运行srs -c conf/conf.json。 - 测试: 推流和播放方式与 Nginx 类似,推流地址为
rtmp://你的IP/live/STREAM_NAME。
SRS 性能卓越,但配置和使用文档需要仔细阅读。
常见问题排查
-
端口被占用:
- 现象: 启动 Nginx/SRS 时提示 "Address already in use"。
- 解决: 使用
netstat -ano | findstr :1935命令找到占用 1935 端口的进程ID,然后去任务管理器中结束该进程,或者修改配置文件中的listen端口。
-
无法推流:
- 检查防火墙: 确保服务器的 1935 端口(RTMP)和 80/8080 端口(HLS)在 Windows 防火墙中是允许的。
- 检查网络: 如果推流端和服务器不在同一局域网,确保服务器有公网IP,并且路由器端口映射正确,如果是在局域网内,使用服务器的内网 IP (如
168.1.100)。 - 检查配置: 确认推流地址和 Nginx 配置文件中的
application名称和路径完全一致。
-
无法播放:
- 检查播放地址: 确保播放地址中的 IP 地址、端口、应用名和流名都正确。
- 检查 HLS 文件: 打开
hls_path指定的目录,看是否有.m3u8和.ts文件生成,如果没有,说明推流没有成功到达 Nginx。 - 检查浏览器控制台: 如果是网页播放,按 F12 打开开发者工具,查看 Console 和 Network 标签页,看是否有错误信息。
希望这份详细的指南能帮助您在 Windows 上成功搭建 RTMP 服务器!
