凌峰创科服务平台

Windows下如何搭建Nginx流媒体服务器?

核心概念:Nginx 在流媒体中的角色

在开始之前,你需要明白 Nginx 在流媒体中通常扮演什么角色:

Windows下如何搭建Nginx流媒体服务器?-图1
(图片来源网络,侵删)
  1. RTMP/HLS 服务器(核心)

    • RTMP (Real-Time Messaging Protocol):Adobe 公司开发的协议,延迟低(通常在1-3秒),主要用于推流和拉流,但因为它基于 Flash,在移动端和现代浏览器上支持不佳,主要用于内部传输或配合 Flash 播放器。
    • HLS (HTTP Live Streaming):Apple 公司开发的基于 HTTP 的协议,它将视频流切分成小的 .ts 文件,并通过一个 .m3u8 索引文件来组织,优点是跨平台(浏览器、手机、APP都支持),可穿透防火墙,缺点是延迟较高(通常在10-30秒)。
    • 我们的目标:搭建一个同时支持 RTMP 和 HLS 的服务器,这样既可以用于低延迟的内部推流,也可以用于广域网观看。
  2. 视频点播 服务器

    • Nginx 可以非常高效地提供 .mp4, .flv, .webm 等视频文件的在线播放服务,这比直接用 Apache 或 IIS 提供文件要高效得多,因为它能利用 X-Accel-Redirect 等机制进行内部重定向,避免 PHP/ASP 等脚本解析的开销。

准备工作:安装 Nginx 及相关模块

标准的 Nginx 不包含 RTMP 和 HLS 模块,所以我们需要使用一个已经编译好这些模块的“发行版”或者自己编译,对于 Windows 用户,使用现成的发行版是最简单的方式。

推荐方案:使用 nginx-for-windows 项目

这是一个专门为 Windows 优化的 Nginx 发行版,已经内置了 nginx-rtmp-modulenginx-flv-module(后者功能更多,如支持 HTTP-FLV 协议,延迟更低)。

Windows下如何搭建Nginx流媒体服务器?-图2
(图片来源网络,侵删)
  1. 下载

  2. 安装

    • 将下载的 .zip 文件解压到一个你喜欢的、没有空格和中文的路径下,D:\nginx
    • 进入解压后的目录,你会看到 nginx.execonfhtml 等文件夹。
  3. 验证安装

    • 打开命令提示符(CMD),进入到 D:\nginx 目录。
    • 运行命令:nginx.exe
    • 打开浏览器,访问 http://localhost,如果看到 "Welcome to nginx!" 页面,说明 Nginx 已经成功启动。

配置 Nginx 为流媒体服务器

这是最核心的一步,我们需要修改 conf/nginx.conf 文件。

Windows下如何搭建Nginx流媒体服务器?-图3
(图片来源网络,侵删)

步骤 1:备份原配置文件

在修改之前,请务必将 conf/nginx.conf 复制一份备份,以防配置错误无法启动。

步骤 2:编辑 nginx.conf

用记事本或 VS Code 等文本编辑器打开 conf/nginx.conf,我们将在文件末尾添加 RTMP 和 HLS 的配置。

配置文件示例 (nginx.conf):

# ... (这里保留 Nginx 原有的 http 块配置,用于网页服务) ...
# 在文件最外层添加一个 rtmp 块
rtmp {
    server {
        listen 1935;  # RTMP 标准监听端口
        chunk_size 4096;
        # 定义一个名为 "live" 的应用
        application live {
            live on;  # 开启直播
            record off; # 关闭录制,如果需要保存录像可以设为 on
            # HLS 配置
            hls on;
            hls_path D:/nginx/hls; # HLS 片段的存放目录,请确保此目录存在
            hls_fragment 3s;       # 每个 HLS 片段的时长
            hls_playlist_length 60s; # m3u8 索引文件包含的时长
            # HTTP-FLV 配置 (可选,但推荐)
            # 它通过 http 协议提供低延迟的 flv 流
            flv_live on;
            flv_live_record off;
        }
    }
}
# 在 http 块中添加一个 server 块,用于提供 HLS 和 HTTP-FLV 的拉流地址
http {
    # ... (这里保留 Nginx 原有的 http 配置) ...
    server {
        listen 8080; # 用于拉流的 HTTP 端口
        # HLS 拉流配置
        location /hls {
            # 允许跨域,如果前端页面和服务器不在一个域下,这个很重要
            add_header 'Access-Control-Allow-Origin' '*' always;
            # 指向 HLS 片段存放目录
            alias D:/nginx/hls;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
        }
        # HTTP-FLV 拉流配置
        location /live {
            # 允许跨域
            add_header 'Access-Control-Allow-Origin' '*' always;
            # flv 模块的拉流配置
            flv_live on;
            chunked_transfer_encoding on;
            add_header 'Access-Control-Allow-Headers' '*';
        }
        # 可选:提供一个简单的测试页面
        location / {
            root html;
            index index.html;
        }
    }
}

步骤 3:创建必要的目录

根据上面的配置,我们需要在 D:\nginx 目录下创建一个名为 hls 的文件夹。

# 在 D:\nginx 目录下
mkdir hls

步骤 4:重启 Nginx 使配置生效

在命令提示符中,进入 Nginx 目录,执行以下命令:

# 停止 Nginx
nginx.exe -s stop
# 启动 Nginx
nginx.exe

或者,你也可以直接打开任务管理器,结束 nginx.exe 进程,然后重新双击 nginx.exe 启动。


如何使用你的流媒体服务器?

现在你的服务器已经配置好了!假设你的服务器 IP 地址是 168.1.100

推流 (使用 OBS 软件)

  1. 下载并安装 OBS Studiohttps://obsproject.com/
  2. 在 OBS 中设置
    • 打开 OBS,进入“文件” -> “设置”。
    • 选择“推流”选项卡。
    • 服务选择“自定义”。
    • 服务器填入:rtmp://192.168.1.100:1935/live
    • 推流密钥填入:mystream (这个 mystream 就是我们在 nginx.confapplication live 后面的名字,你可以随意修改,但要保持一致)。
    • 点击“推流”按钮,OBS 就会将你的桌面或摄像头画面推送到 Nginx 服务器。

拉流 (播放)

推流成功后,服务器会生成可播放的地址,你可以在任何支持这些协议的播放器或网页中观看。

  • HLS 播放地址 (推荐用于网页): http://192.168.1.100:8080/hls/mystream.m3u8

    • 网页播放: 你可以使用 video.jshls.js 这样的库在网页中播放这个地址。
    • VLC 播放: 在 VLC 的“媒体” -> “打开网络串流”中,粘贴此地址。
  • HTTP-FLV 播放地址 (低延迟): http://192.168.1.100:8080/live?app=live&stream=mystream

    • 网页播放: 可以使用 flv.js 库在网页中播放。
    • VLC 播放: 同样在“打开网络串流”中粘贴此地址。
  • RTMP 播放地址 (低延迟,但需要特定播放器): rtmp://192.168.1.100:1935/live/mystream

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