Docker快速搭建Nginx直播流媒体服务器

语言: CN / TW / HK

准备软件


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流)


设置拉流地址

播放视频

设置好拉流地址后,过几秒就可以播放视频了。