🗣 Wd提问: nginx搭建流媒体服务器
🤖 Ai回答: 使用 Nginx 搭建流媒体服务器,通常需要借助 nginx-rtmp-module 模块来支持 RTMP 协议,同时也可以结合 HLS(HTTP Live Streaming)实现跨平台播放。以下是详细步骤:
✅ 一、环境准备
Linux 系统(推荐 Ubuntu/CentOS)
编译工具:gcc、make、git
依赖库:openssl、pcre、zlib
Nginx 源码(建议最新稳定版)
nginx-rtmp-module 源码
✅ 二、安装依赖
Ubuntu/Debian:
bash
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev git
CentOS/RHEL:
bash
sudo yum groupinstall Development Tools
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel git
✅ 三、下载源码
bash
cd /tmp
下载 Nginx(以 1.24.0 为例)
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
下载 nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git
✅ 四、编译安装 Nginx + RTMP 模块
bash
cd nginx-1.24.0
./configure prefix=/usr/local/nginx \
with-http_ssl_module \
add-module=../nginx-rtmp-module \
with-http_flv_module \
with-http_mp4_module
make && sudo make install
⚠️ 注意路径:确保 `add-module=../nginx-rtmp-module` 路径正确。
✅ 五、配置 Nginx 支持 RTMP 和 HLS
编辑配置文件:
bash
sudo nano /usr/local/nginx/conf/nginx.conf
在文件末尾添加以下内容:
nginx
RTMP 配置块
rtmp {
server {
listen 1935; RTMP 默认端口
chunk_size 4096;
application live {
live on;
record off;
启用 HLS
hls on;
hls_path /tmp/hls;
hls_fragment 3s;
hls_playlist_length 10s;
可选:允许跨域访问 HLS
allow publish all;
allow play all;
}
}
}
HTTP 服务用于播放 HLS
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080; HLS 访问端口
server_name localhost;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp; 对应 hls_path
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
可选:状态页
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /tmp/nginx-rtmp-module/; 替换为你的模块路径
}
}
}
📌 注意:
`hls_path` 必须存在且有写权限:`sudo mkdir -p /tmp/hls && sudo chmod 755 /tmp/hls`
如果要启用状态页,需复制 `stat.xsl` 文件到指定目录:
bash
sudo cp /tmp/nginx-rtmp-module/stat.xsl /tmp/nginx-rtmp-module/
✅ 六、启动 Nginx
bash
sudo /usr/local/nginx/sbin/nginx
检查是否启动成功:
bash
ps aux | grep nginx
netstat -tlnp | grep :1935
netstat -tlnp | grep :8080
重启或重载配置:
bash
sudo /usr/local/nginx/sbin/nginx -s reload
sudo /usr/local/nginx/sbin/nginx -s stop
✅ 七、推流与播放测试
1、推流(使用 OBS 或 ffmpeg)
OBS 设置:
串流类型:自定义
服务器:`rtmp://your-server-ip/live`
串流密钥:`test` (任意)
FFmpeg 命令行推流示例:
bash
ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f flv rtmp://localhost/live/test
2、播放
RTMP 播放器(如 VLC):
rtmp://your-server-ip/live/test
HLS 播放(浏览器或支持 HLS 的播放器):
http://your-server-ip:8080/hls/test.m3u8
🎬 推荐前端播放器:[hls.js](https://github.com/video-dev/hls.js)、[video.js + videojs-contrib-hls](https://github.com/videojs/videojs-contrib-hls)
✅ 八、进阶功能(可选)
录制直播流:
nginx
record all;
record_path /tmp/recordings;
record_suffix -%Y%m%d-%H%M%S.flv;
转码多码率(需 FFmpeg 支持):
nginx
application src {
live on;
exec ffmpeg -i rtmp://localhost/src/$name
-c:v libx264 -b:v 512k -s 640x360 -f flv rtmp://localhost/hls/$name_low
-c:v libx264 -b:v 1024k -s 1280x720 -f flv rtmp://localhost/hls/$name_high;
}
身份验证、限制推流 IP
✅ 九、常见问题
1、端口被占用?
bash
sudo lsof -i :1935
sudo kill -9 <PID
2、HLS 不生成?
检查 `/tmp/hls` 是否有写入权限。
检查推流是否成功(看日志 `/usr/local/nginx/logs/error.log`)。
3、防火墙阻止?
bash
sudo ufw allow 1935/tcp
sudo ufw allow 8080/tcp
✅ 十、开机自启(可选)
创建 systemd 服务:
bash
sudo nano /etc/systemd/system/nginx-rtmp.service
内容:
ini
[Unit]
Description=NGINX RTMP Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启用服务:
bash
sudo systemctl daemon-reload
sudo systemctl enable nginx-rtmp
sudo systemctl start nginx-rtmp
✅ 总结
通过以上步骤,你已成功搭建了一个支持 RTMP 推流 + HLS 播放 的流媒体服务器。适用于直播、在线教育、监控等场景。
💡 提示:生产环境建议使用专业流媒体服务(如 SRS、Wowza、Nimble Streamer)或云服务(阿里云直播、腾讯云直播),性能和稳定性更佳。
如需支持 DASH、WebRTC、集群部署等高级功能,可进一步集成 `nginx-ts-module`、`SRS` 或使用 `Node-Media-Server` 等方案。
如有具体问题,欢迎继续提问!🎥🚀
📣 商家广告:





0
IP地址: 84.165.62.72
搜索次数: 95
提问时间: 2025-11-20 10:01:23
本站所有
❓
问答
均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
本站由
🟢
豌豆Ai
提供技术支持,使用的最新版:
豌豆Ai站群搜索引擎系统 V.25.10.25
搭建本站。