Skip to content

nginx-rtmp配置,这是在windows下编译的带rtmp的nginx并配置直播、点播环境、以及负载均衡的配置实例项目,其中包含整个过程的所有文件及相应的操作视频教程。

Notifications You must be signed in to change notification settings

luowei/nginx-rtmp-sample

Repository files navigation

nginx-rtmp-sample

Windows 平台下 Nginx-RTMP 流媒体服务器配置示例

项目简介

nginx-rtmp-sample 是一个在 Windows 平台下配置和使用 Nginx-RTMP 流媒体服务器的完整示例项目。虽然 Linux/Unix 下的配置资料丰富,但 Windows 下配置会面临更多问题,本项目专注于提供 Windows 平台下的完整解决方案,包括编译好的 Nginx-RTMP 可执行文件、配置文件示例和使用说明。

技术栈

  • Web 服务器: Nginx (Windows 版本)
  • 流媒体模块: nginx-rtmp-module
  • 视频处理: FFmpeg
  • Web 技术: PHP (FastCGI), HTML, JavaScript
  • 播放器: JW Player
  • 流媒体协议: RTMP, HLS (HTTP Live Streaming)

功能特性

核心功能

  • RTMP 直播推流:支持 OBS、FFmpeg 等工具推流
  • RTMP 直播拉流:支持多种播放器观看直播
  • HLS 直播:自动切片生成 m3u8 和 ts 文件
  • 视频点播(VOD):支持本地和远程视频点播
  • 服务端录制:自动录制直播流到本地
  • 流转码:使用 FFmpeg 进行实时转码
  • 多码率推流:支持同一源流推送到多个目标
  • 负载均衡:Nginx upstream 配置实现负载均衡
  • 访问控制:IP 白名单/黑名单控制推流和播放权限
  • 统计信息:实时流媒体统计信息展示

扩展功能

  • PHP 集成(FastCGI)
  • 事件通知回调(on_play, on_publish)
  • 流元数据处理
  • 多种转码预设配置

项目结构

nginx-rtmp-sample/
├── nginx-rtmp.exe              # 主 Nginx-RTMP 可执行文件
├── nginx-rtmp(illuspas).exe    # illuspas 编译版本
├── nginx-rtmp(xaccc).exe       # xaccc 编译版本
├── ffmpeg.7z                   # FFmpeg 工具包(压缩)
├── RunHiddenConsole.exe        # 后台运行工具
├── conf/                       # 配置文件目录
│   ├── nginx.conf             # 主配置文件
│   ├── nginx.conf.b           # 备用配置
│   ├── nginx.conf.upstream    # 负载均衡配置
│   ├── nginx.new.conf         # 新版配置示例
│   └── conf.d/                # 模块化配置
│       ├── http.conf          # HTTP 服务配置
│       ├── http2.conf         # HTTP 配置变体 2
│       ├── http3.conf         # HTTP 配置变体 3
│       ├── http4.conf         # 负载均衡 HTTP 配置
│       ├── rtmp.conf          # RTMP 主配置
│       ├── rtmp2.conf         # RTMP 配置变体 2
│       ├── rtmp3.conf         # RTMP 配置变体 3
│       ├── rtmp4.conf         # RTMP 配置变体 4
│       ├── rtmp5.conf         # RTMP 配置变体 5
│       ├── rtmp6.conf         # RTMP 配置变体 6
│       ├── rtmp7.conf         # RTMP 配置变体 7
│       ├── mail.conf          # Mail 代理配置
│       └── upstream.conf      # Upstream 配置
├── html/                      # Web 根目录
│   ├── index.html            # 主页
│   ├── stat.xsl              # 统计信息样式
│   ├── vodtest.html          # 点播测试页面
│   ├── transcoding.html      # 转码测试页面
│   ├── client/               # 客户端测试页面
│   ├── jwplayer/             # JW Player 播放器
│   ├── media/                # 媒体文件目录
│   │   ├── hls/             # HLS 切片存储
│   │   └── record/          # 录制文件存储
│   └── test/                 # 测试页面
├── batch_file/               # 批处理脚本
├── start_nginx.bat           # 启动 Nginx
├── stop_nginx.bat            # 停止 Nginx
├── reload_nginx.bat          # 重载配置
├── start_phpcgi.bat          # 启动 PHP-CGI
├── stop_phpcgi.bat           # 停止 PHP-CGI
├── build.bat                 # 构建脚本
├── php.ini                   # PHP 配置文件
├── contrib/                  # 第三方库
├── nginx-test/              # 测试工具
└── temp/                    # 临时文件目录

RTMP 应用配置说明

1. myapp - 综合应用

  • 直播流: 支持 RTMP 推流和播放
  • HLS 支持: 自动生成 HLS 切片
  • 录制功能: 30 秒间隔录制
  • 事件回调: on_play 和 on_publish 通知

2. vod - 本地点播

  • 从本地 html/media 目录播放视频文件

3. vod_http - HTTP 点播

  • 从远程 HTTP 服务器播放视频

4. vod_mirror - 镜像点播

  • 优先本地,失败则从远程获取

5. live - 受限直播

  • 仅允许 127.0.0.1 推流
  • 所有人可观看
  • 自动录制(最大 100MB)
  • 推流到 live2 应用

6. live2 - 开放直播

  • 允许所有人推流和播放

依赖要求

  • 操作系统: Windows XP/7/8/10/11
  • FFmpeg: 已包含在 ffmpeg.7z 中
  • PHP: 可选(如需 PHP 功能)
  • 播放器: 支持 RTMP/HLS 的播放器(VLC、JW Player 等)

安装和运行

1. 解压 FFmpeg

# 解压 ffmpeg.7z 到当前目录或指定位置
# 确保 ffmpeg.exe 在系统 PATH 中或项目 Encoding 目录下

2. 启动 Nginx-RTMP 服务器

方式一:前台运行

# 双击运行
nginx-rtmp.exe

# 或命令行运行
nginx-rtmp.exe -c conf/nginx.conf

方式二:后台运行(推荐)

# 使用批处理脚本启动
start_nginx.bat

# 或使用隐藏控制台工具
RunHiddenConsole.exe nginx-rtmp.exe

3. 启动 PHP-CGI(可选)

# 如需 PHP 功能,运行
start_phpcgi.bat

4. 测试服务

使用说明

直播推流

使用 FFmpeg 推流

# 推流到 live 应用
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://127.0.0.1/live/stream

# 推流到 myapp 应用
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://127.0.0.1/myapp/stream

使用 OBS 推流

  • 服务器: rtmp://127.0.0.1/live
  • 串流密钥: stream(或自定义流名称)

直播拉流

使用 VLC 播放器

rtmp://127.0.0.1/live/stream

使用 FFplay 播放

ffplay rtmp://127.0.0.1/live/stream

使用 Web 播放器

HLS 播放

http://localhost/media/hls/stream.m3u8

视频点播

# 播放本地视频(文件需放在 html/media 目录)
rtmp://127.0.0.1/vod/video.mp4

# 播放 HTTP 视频
rtmp://127.0.0.1/vod_http/video.mp4

视频转码示例

1. 基本转码

# 转码为 480p
ffmpeg -i rtmp://127.0.0.1/live1/1080 \
  -vcodec flv -acodec copy -s 360x360 \
  -f flv rtmp://127.0.0.1/live3/480

2. H.264 转码(高质量)

# 转码为 720p
ffmpeg -i rtmp://127.0.0.1/live1/1080 \
  -vcodec libx264 -preset veryfast \
  -x264opts nal-hrd=cbr:force-cfr=1:keyint=60 \
  -b:v 3000k -bufsize 3000k \
  -s 1280x720 -sws_flags spline -r 30 \
  -acodec copy -f flv rtmp://127.0.0.1/live2/720

3. 多码率转码

# 转码为多个分辨率
ffmpeg -i rtmp://127.0.0.1/big/1080 \
  -vcodec libx264 -preset faster \
  -x264opts nal-hrd=cbr:force-cfr=1:keyint=60 \
  -b:v 3000k -maxrate 3000k -bufsize 3000k \
  -s 1280x720 -sws_flags spline -r 30 \
  -acodec copy -f flv rtmp://127.0.0.1/small/720

4. 屏幕直播(Linux/Mac)

# 推送桌面画面到 RTMP 服务器
ffmpeg -f x11grab -follow_mouse centered \
  -r 25 -s cif -i :0.0 \
  -f flv rtmp://127.0.0.1/live1/screen

配置管理

切换配置文件

主配置文件 conf/nginx.conf 通过 include 指令加载不同的配置组合:

# HTTP 配置(三选一)
include conf.d/http.conf;
# include conf.d/http2.conf;
# include conf.d/http3.conf;

# RTMP 配置
include conf.d/rtmp.conf;

# 负载均衡配置(可选)
# include conf.d/http4.conf;

重载配置

# 使用批处理脚本
reload_nginx.bat

# 或使用 nginx 命令
nginx-rtmp.exe -s reload

停止服务

# 使用批处理脚本
stop_nginx.bat

# 或使用 nginx 命令
nginx-rtmp.exe -s stop

视频教程

推荐配置搭建视频教程

  1. apache+php 与 nginx+php 环境的搭建
  2. nginx_rtmp 在 windows 下编译及点播、直播、服务端录制的配置
  3. ffmpeg+jwplayer+nginx 负载均衡配置

常见问题

1. 端口占用

  • 确保 80 端口(HTTP)和 1935 端口(RTMP)未被占用
  • 可在配置文件中修改端口号

2. 推流失败

  • 检查防火墙设置
  • 确认 IP 访问控制配置(allow/deny)
  • 查看 logs/rtmp_error.log 错误日志

3. HLS 不生成切片

  • 确保 html/media/hls 目录存在且可写
  • 检查 rtmp 配置中的 hls 相关设置

4. 录制文件找不到

  • 确认录制路径 html/media/record 存在
  • 检查录制配置参数(record_path, record_unique)

技术特点

  1. 多版本支持: 提供三个不同编译版本的 Nginx-RTMP
  2. 模块化配置: 配置文件分离,易于管理和切换
  3. 完整示例: 包含直播、点播、转码等完整使用场景
  4. 批处理脚本: Windows 下便捷的启停管理
  5. 负载均衡: 支持 upstream 配置实现高可用
  6. 访问控制: 细粒度的推流和播放权限控制
  7. 实时统计: 内置统计页面监控服务状态

许可证

本项目仅供学习和参考使用。

相关资源

About

nginx-rtmp配置,这是在windows下编译的带rtmp的nginx并配置直播、点播环境、以及负载均衡的配置实例项目,其中包含整个过程的所有文件及相应的操作视频教程。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published