Docker快速搭建Nginx直播流媒体服务器
准备软件
Linux
- Docker
- nginx-rtmp
Windows
- OBS
- PotPlayer
docker的nginx-rtmp是封装了nginx-rtmp-module和ffmpeg的镜像
https://hub.docker.com/r/alfg/nginx-rtmp
搭建流媒体服务器
编写docker-compose.yml
yaml
version: '3.1'
services:
nginx-rtmp-test:
restart: always
image: alfg/nginx-rtmp
container_name: nginx-rtmp-test
ports:
- 1935:1935
- 8080:80
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
- ./log:/var/log/nginx
编写nginx.conf
```
user 指定运行 nginx 的用户和组(第一个参数为用户第二个为组,这里只有用户)
user root;
指定工作进程数(一般设置为CPU核数)
worker_processes 1;
nginx 连接配置模块
events { # 指定每个工作进程最大连接数为 1024 worker_connections 1024; }
RTMP 服务(重点)
rtmp {
server{
#指定服务端口
listen 1935; # //RTMP协议使用的默认端口
chunk_size 4000; # //RTMP分块大小
#指定 HLS 流应用
application hls { # hls为流应用的名称,可以随便填
live on; # //打开直播流
hls on; # //打开 HLS
hls_path /tmp/hls;
}
}
}
http 配置模块
http { # 通过 include 加载 mime.types 文件,里面的 types {} 模块将文件扩展名映射到响应的 MIME 类型 include mime.types; # 定义响应的默认 MIME 类型 default_type application/octet-stream;
# 启用或者禁用 sendfile()
sendfile on;
# 65 s 超时
keepalive_timeout 65;
# etag
etag on;
# 过期时间
expires 7d;
# 虚拟主机配置模块
server {
# 监听 8080 端口
listen 8080;
# 监听域名为 localhost
server_name localhost;
location /hls {
# Serve HLS fragments
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}
} ```
启动Nginx流媒体服务器
shell
docker-compose up -d
检查启动状态
shell
netstat -ntpl | grep 1935
使用OBS推流(RTMP流)
打开设置
在设置中添加推流地址
服务:选择自定义
服务器:rtmp://自己服务器ip:1935/stream
串流密钥:随便填,相当于房间号
添加媒体源
开始推流
使用播放器拉流(RTMP流)
这里使用potplayer播放器拉流播放视频
设置拉流地址
拉流地址的格式为:http://localhost:8080/live/$STREAM_NAME.m3u8
所以我们这里的拉流地址为:http://47.xxx.xxx.62:8080/live/alanlee.m3u8
也可以使用rtmp协议地址播放视频
拉流地址的格式为:http://localhost:1935/$STREAM_NAME
所以我们这里的拉流地址为:http://47.xxx.xxx.62:1935/alanlee
播放视频
设置好拉流地址后,过几秒就可以播放视频了。
也可以通过这个网页播放视频
http://www.ossrs.net/players/srs_player.html
到这里已经完成搭建直播流媒体服务器的推流拉流过程了。下面是推hls流是可选方案。
使用OBS推流(HLS流)
以上是使用rtmp推流的,在nginx配置中,我们也配置了hls的推流应用。推流方式与RTMP方式基本一致,只是推流地址有点小变化。
在设置中添加推流地址
服务:选择自定义
服务器:rtmp://自己服务器ip:1935/hls
串流密钥:随便填,相当于房间号
设置好之后就开始推流
使用播放器拉流(HLS流)
设置拉流地址
播放视频
设置好拉流地址后,过几秒就可以播放视频了。