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

3,230 阅读2分钟

准备软件


Linux

  • Docker
  • nginx-rtmp

Windows

  • OBS
  • PotPlayer

docker的nginx-rtmp是封装了nginx-rtmp-module和ffmpeg的镜像

hub.docker.com/r/alfg/ngin…

搭建流媒体服务器


编写docker-compose.yml

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流媒体服务器

docker-compose up -d

检查启动状态

netstat -ntpl | grep 1935

使用OBS推流(RTMP流)


打开设置

在设置中添加推流地址

服务:选择自定义

服务器:rtmp://自己服务器ip:1935/stream

串流密钥:随便填,相当于房间号

添加媒体源

开始推流

使用播放器拉流(RTMP流)


这里使用potplayer播放器拉流播放视频

设置拉流地址

拉流地址的格式为:http://localhost:8080/live/$STREAM_NAME.m3u8

所以我们这里的拉流地址为:47.xxx.xxx.62:8080/live/alanle…

也可以使用rtmp协议地址播放视频

拉流地址的格式为:http://localhost:1935/$STREAM_NAME

所以我们这里的拉流地址为:47.xxx.xxx.62:1935/alanlee

播放视频

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

也可以通过这个网页播放视频

www.ossrs.net/players/srs…

到这里已经完成搭建直播流媒体服务器的推流拉流过程了。下面是推hls流是可选方案。

使用OBS推流(HLS流)


以上是使用rtmp推流的,在nginx配置中,我们也配置了hls的推流应用。推流方式与RTMP方式基本一致,只是推流地址有点小变化。

在设置中添加推流地址

服务:选择自定义

服务器:rtmp://自己服务器ip:1935/hls

串流密钥:随便填,相当于房间号

设置好之后就开始推流

使用播放器拉流(HLS流)


设置拉流地址

播放视频

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