Windows系统 ffmpeg+nginx+VLC搭建RTMP/HLS流媒体服务
保存之后将文件拓展名改为bat,双击NginxStart.bat即可运行nginx(注:因为nginx-1.7.11.3-Gryphon中没有nginx.conf文件,所以双击nginx.exe是无法运行nginx的)下载地址:https://nginx-win.ecsds.eu/download/ 选择1.7.11.3 Gryphon.zip下载即可。(1)在https://www.gyan.d
Nginx配置
1.版本
需选用nginx-1.7.11.3-Gryphon ,该版本已集成 RTMP 模块,下载解压即可直接配置 RTMP/HLS 服务。
下载地址:https://nginx-win.ecsds.eu/download/ 选择1.7.11.3 Gryphon.zip下载即可
2.nginx-rtmp-module
需下载nginx-rtmp-module,这是 Nginx 的 第三方扩展模块,为 Nginx 增加了 RTMP(Real-Time Messaging Protocol)服务器 能力,常用于 直播推流、点播、录制 等流媒体场景。
下载地址:https://github.com/arut/nginx-rtmp-module
3.nginx-1.7.11.3-Gryphon 配置
(1)将nginx-1.7.11.3-Gryphon解压至任意地址,打开"...\nginx-1.7.11.3-Gryphon\conf\nginx-win.conf"将其内容替换为:
worker_processes 1; # 只起 1 个 Nginx 主进程(Windows 单进程即可)
events {
worker_connections 1024; # 每个进程最多 1024 条并发连接(含 HTTP + RTMP)
}
rtmp {
server {
listen 1940; # RTMP 服务监听本地 1940 端口 默认端口为1935
chunk_size 4096;
# ⬇ 推流 / 拉流应用
application live {
live on; # 允许推流/拉流
record_path ../record; # .flv 录像保存到 nginx.exe 同级 record 目录
record all; # 所有流都录
record_unique on; # 文件名加时间戳,防止覆盖
record_suffix .flv; # 扩展名 .flv}
}
# ⬇ HLS 低延时切片
application hls {
live on; # 允许推流
hls on; # 开启 HLS 切片
hls_path F:/StreamingMedia/Nginx/html/hls; # .m3u8 / .ts 切片保存目录
hls_fragment 1s; # 每 1 秒切一个 ts
hls_playlist_length 3s; # 播放列表只保留最近
hls_cleanup on; # 自动删除过期切片,防止磁盘爆
hls_continuous off;# NEW:关闭连续模式,防止长时间推流后旧切片堆积
}
}
}
http {
include mime.types; # 载入文件扩展名 → MIME 类型映射表(保证 .m3u8/.ts 识别正确)
default_type application/octet-stream; # 若找不到 MIME,默认按二进制流下载
server {
listen 8099; # 浏览器/播放器访问端口:http://127.0.0.1:8099/...(默认端口为80)
server_name localhost; # 本机即可,也可改成域名或 IP
# 首页 / 统计页面
location / {
root html; # 网站根目录 = nginx/html
index index.html; # 访问 http://127.0.0.1:8099/ 时默认返回 index.html
}
location /stat {
rtmp_stat all; # 把 RTMP 实时状态(在线流、带宽、连接数)生成 XML
rtmp_stat_stylesheet stat.xsl; # 用配套的 XSL 样式表,浏览器访问时显示成漂亮表格# 访问地址:http://127.0.0.1:8099/stat
}
# HLS 播放地址
location /hls {
alias F:/StreamingMedia/Nginx/html/hls; # 把磁盘上的 .m3u8 + .ts 文件映射到 URL /hls
types {
application/vnd.apple.mpegurl m3u8; # 告诉浏览器 .m3u8 是 HLS 播放列表
video/mp2t ts; # .ts 是 MPEG-TS 视频流
}
add_header Cache-Control no-cache; # 禁止浏览器缓存,保证直播实时
add_header Access-Control-Allow-Origin *; # 允许跨域,前端/播放器可直接拉流
# 最终播放地址:# http://127.0.0.1:8099/hls/<流名>.m3u8}
}
}
}
(2)在nginx-1.7.11.3-Gryphon文件夹下,新建名为nginx-rtmp-module的文件夹并将nginx-rtmp-module.zip中的文件解压至此处。
(3)在nginx-1.7.11.3-Gryphon文件夹下,新建名为NginxStart的txt文件,输入
@echo off
cd /d "%~dp0"
nginx.exe -c conf\nginx-win.conf -p "%cd%"
pause
保存之后将文件拓展名改为bat,双击NginxStart.bat即可运行nginx(注:因为nginx-1.7.11.3-Gryphon中没有nginx.conf文件,所以双击nginx.exe是无法运行nginx的)
或者在cmd中输入以下代码也是可以启动nginx的。
nginx.exe -c conf\nginx-win-rtmp.conf
nginx使用完毕需要在cmd中输入以下代码关闭nginx进程,避免影响下一次的使用。
taskkill /IM nginx.exe /F
ffmpeg推流
推流地址为 rtmp://<服务器IP>/live/<流名>,拉流地址同样为此地址
1.ffmpeg配置
(1)在https://www.gyan.dev/ffmpeg/builds/下载release-full版本,并解压。
(2)解压到如 C:\ffmpeg将 C:\ffmpeg\bin 添加到系统环境变量:控制面板 → 系统 → 高级系统设置 → 环境变量 → 系统变量 Path → 新建 → 粘贴路径 → 保存
(3)在cmd中输入以下代码,如果能够显示版本信息即为配置成功
ffmpeg -version
2.rtmp推流
ffmpeg -re -i "F:\StreamingMedia\test.mp4" ^
//推送视频在本机的地址
-c:v libx264 -preset veryfast -tune zerolatency ^
-c:a aac -ar 44100 -f flv ^
rtmp://127.0.0.1:1940/live/streamkey
//127.0.0.1为服务器IP 1940为端口号(默认端口号为1935)
原理如图
3.rtmp循环推流
ffmpeg -re -stream_loop -1 -i "F:\StreamingMedia\test.mp4" ^
//-stream_loop -1无限循环输入文件-1 表示无限次,相当于把 test.mp4 播完立即从头再来
-c:v libx264 -preset veryfast -tune zerolatency ^
-c:a aac -ar 44100 -b:a 128k ^
-f flv rtmp://127.0.0.1:1940/live/streamkey
//127.0.0.1为服务器IP 1940为端口号(默认端口号为1935)
如果要停止推流在cmd中点击ctrl+c即可停止。
4.rtmp推多个流
在两个或多个cmd中输入以下代码运行即可。
ffmpeg -re -i "F:\StreamingMedia\test.mp4" -c copy -f flv rtmp://127.0.0.1:1944/live2/stream1
ffmpeg -re -i "F:\StreamingMedia\test2.mp4" -c copy -f flv rtmp://127.0.0.1:1944/live2/stream2
5.HLS推流
ffmpeg -re -i F:\StreamingMedia\test.mp4 -c:v libx264 -c:a aac -f flv rtmp://localhost:1940/hls/stream
//1940为端口号(默认端口号为1935)
原理如图

6.HLS循环推流
ffmpeg -re -stream_loop -1 -i "F:\StreamingMedia\test2.mp4" ^
-c:v libx264 -g 30 -keyint_min 30 ^
-c:a aac -f flv ^
rtmp://localhost:1940/hls/stream
//1940为端口号(默认端口号为1935)
如果要停止推流在cmd中点击ctrl+c即可停止。
VLC拉流
1.下载
在网站 https://www.videolan.org/vlc/index.zh_CN.html 选择适合自己的版本下载并安装即可。
2.VLC 拉取rtmp流操作步骤
(1)打开 VLC → 媒体 → 打开网络串流

(2)在 网络 URL 框粘贴上表对应的地址,点击播放即可。(注:url一般的格式为rtmp://<服务器IP>:<端口号>/live/stream)


3.VLC 拉取HLS流操作步骤
(1)打开 VLC → 媒体 → 打开网络串流

(2)在 网络 URL 框粘贴上表对应的地址,点击播放即可。(注:url一般的格式为http://<服务器IP>:<端口号>/live/流名称.m3u8)


火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)