凌峰创科服务平台

Windows下如何搭建RTMP服务器?

方案概览

方案 推荐人群 优点 缺点 部署难度
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】,因为它最经典、最稳定、资料也最多。

Windows下如何搭建RTMP服务器?-图1
(图片来源网络,侵删)

使用 Nginx + RTMP 模块(最推荐)

这是目前最流行、最经典的组合,Nginx 是一个高性能的 Web 服务器和反向代理服务器,通过添加 nginx-rtmp-module 模块,它就具备了 RTMP 服务的能力。

第一步:下载软件

  1. 下载 Nginx for Windows:

  2. 下载 RTMP 模块:

第二步:编译 Nginx (或使用预编译版)

方法A:使用预编译好的 Nginx (强烈推荐,无需编译) 为了方便,很多开发者已经将 RTMP 模块编译进了 Nginx,你可以直接下载这些预编译版本。

Windows下如何搭建RTMP服务器?-图2
(图片来源网络,侵删)

方法B:从源码编译 (需要安装 Visual Studio 和 CMake) 如果你追求完全的掌控,可以自己编译。

  1. 安装 Visual Studio (推荐 2025 或 2025 社版,安装时勾选 "使用C++的桌面开发")。

  2. 安装 CMake: https://cmake.org/download/

  3. 打开 x64 Native Tools Command Prompt for VS 2025 命令行工具。

    Windows下如何搭建RTMP服务器?-图3
    (图片来源网络,侵删)
  4. 执行以下命令:

    # 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 服务器

我们以使用预编译版为例。

  1. 将下载的预编译版 Nginx .zip 文件解压到一个固定路径,D:\nginx-rtmp
  2. 进入 conf 目录,找到 nginx.conf 文件,用记事本或 VS Code 等文本编辑器打开。
  3. 在文件末尾添加 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 文件的存储目录,请确保此目录存在且有写入权限。

第四步:启动服务器和测试

  1. 启动 Nginx:

    • 打开命令提示符 (CMD),进入 Nginx 解压目录的 nginx-rtmp 文件夹。
    • 执行命令:nginx.exe
    • 如果没有弹出任何窗口,说明启动成功,如果端口被占用,会提示错误,可以通过 tasklist | findstr nginx 查看进程。
  2. 测试推流 (使用 OBS Studio):

    • 下载并安装 OBS Studio: https://obsproject.com/
    • 打开 OBS,在“来源”面板点击 号,选择“媒体源”或“游戏 capture”等添加一个视频源。
    • 在 OBS 右下角的“设置”中,进入“推流”选项卡。
    • 服务选择“自定义...”。
    • 服务器填入:rtmp://127.0.0.1/live (如果推送到另一台电脑,请用那台电脑的IP地址)。
    • 推流密钥填入:mystream (这个是任意字符串,对应配置文件中的 application live,Nginx 不会验证密钥)。
    • 点击“开始推流”。
  3. 测试播放:

    • 使用 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 文件,即可看到播放器并开始播放直播。

使用 Ant Media Server (图形化界面)

如果你不想碰配置文件,希望有一个可视化的管理界面,Ant Media Server 是绝佳选择。

步骤:

  1. 下载: 访问 Ant Media Server 官网 https://antmedia.io/,下载 Windows 版本,它提供免费版(有100个并发流的限制)和付费版。
  2. 安装: 解压下载的 .zip 文件,运行 ant-media-server.bat
  3. 启动: 服务器会自动启动,并打开一个命令行窗口显示日志,默认情况下,它会启动在 5080 端口。
  4. Web 管理界面: 打开浏览器,访问 http://localhost:5080 (如果服务器在其他电脑,请用对应IP)。
  5. 配置和推流:
    • 登录后,在左侧菜单找到 "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 服务器,在直播行业有很好的口碑。

步骤:

  1. 下载: 访问 SRS 官网 https://ossrs.io/cn/,下载 Windows 版本的二进制包。
  2. 安装: 解压到任意目录,如 D:\srs
  3. 配置: 编辑 conf\conf.json 文件,可以参考官方文档修改默认的 1935 端口和 live 应用等。
  4. 启动: 在命令行中进入 srs 目录,运行 srs -c conf/conf.json
  5. 测试: 推流和播放方式与 Nginx 类似,推流地址为 rtmp://你的IP/live/STREAM_NAME

SRS 性能卓越,但配置和使用文档需要仔细阅读。


常见问题排查

  1. 端口被占用:

    • 现象: 启动 Nginx/SRS 时提示 "Address already in use"。
    • 解决: 使用 netstat -ano | findstr :1935 命令找到占用 1935 端口的进程ID,然后去任务管理器中结束该进程,或者修改配置文件中的 listen 端口。
  2. 无法推流:

    • 检查防火墙: 确保服务器的 1935 端口(RTMP)和 80/8080 端口(HLS)在 Windows 防火墙中是允许的。
    • 检查网络: 如果推流端和服务器不在同一局域网,确保服务器有公网IP,并且路由器端口映射正确,如果是在局域网内,使用服务器的内网 IP (如 168.1.100)。
    • 检查配置: 确认推流地址和 Nginx 配置文件中的 application 名称和路径完全一致。
  3. 无法播放:

    • 检查播放地址: 确保播放地址中的 IP 地址、端口、应用名和流名都正确。
    • 检查 HLS 文件: 打开 hls_path 指定的目录,看是否有 .m3u8.ts 文件生成,如果没有,说明推流没有成功到达 Nginx。
    • 检查浏览器控制台: 如果是网页播放,按 F12 打开开发者工具,查看 Console 和 Network 标签页,看是否有错误信息。

希望这份详细的指南能帮助您在 Windows 上成功搭建 RTMP 服务器!

分享:
扫描分享到社交APP
上一篇
下一篇