如何在CentOS 7上搭建Nginx + RTMP + nginx-http-flv-module的流媒体服务

目录
文章目录隐藏
  1. 1. 引言
  2. 2. 安装 Nginx
  3. 3. 安装依赖库
  4. 4. 下载编译 Nginx with RTMP 模块
  5. 5. 配置 Nginx
  6. 6. 启动 Nginx
  7. 7. 推流测试
  8. 8. 播放测试
  9. 9. 拓展
  10. 10. 总结

1. 引言

五一假期本来是放松的时刻,没办法,内卷太厉害,为了不被环境所淘汰,那就只能用力学,哈哈。

实时消息传输协议(RTMP)是一种设计用于实时数据传输的协议,广泛用于流媒体服务。本文将介绍如何在 CentOS 7 上搭建一个基于 Nginx 的 RTMP 服务器,并使用 nginx-http-flv-module 模块实现 HTTP-FLV 流媒体服务。

2. 安装 Nginx

首先,我们需要安装 Nginx。使用以下命令在 CentOS 7 上安装 Nginx:

sudo yum install epel-release
sudo yum install nginx

3. 安装依赖库

为了支持 RTMP 模块,我们需要安装一些依赖库:

sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

4. 下载编译 Nginx with RTMP 模块

cd ~
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

# 下载 nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git

# 编译安装
./configure --add-module=./nginx-rtmp-module
make
sudo make install

5. 配置 Nginx

编辑 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;

            # 添加 HLS 支持
            hls on;
            hls_path /usr/local/nginx/html/hls;
            hls_fragment 3;
            hls_playlist_length 60;
        }
    }
}

http {
    server {
        listen 80;
        server_name localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        # 添加 HTTP-FLV 模块配置
        location /live {
            flv;
            root /usr/local/nginx/html;
        }
    }
}

在上述配置中,我们定义了一个 RTMP 服务器,监听在 1935 端口。其中,application live 用于处理直播流,同时我们开启了 HLS 支持。HTTP 服务监听在 80 端口,添加了 HTTP-FLV 模块配置,用于处理 FLV 格式的 HTTP 流。

6. 启动 Nginx

启动 Nginx 服务:

sudo /usr/local/nginx/sbin/nginx

7. 推流测试

使用支持 RTMP 推流的工具(如 OBS Studio)进行推流测试。设置推流地址为 rtmp://your-server-ip:1935/live/stream

8. 播放测试

使用浏览器或支持 FLV 播放的工具,访问 http://your-server-ip/live/stream.flv 进行播放测试。

至此,你已经成功搭建了一个 Nginx + RTMP + nginx-http-flv-module 的流媒体服务环境。

9. 拓展

9.1 鉴权配置

你可以通过 Nginx 的鉴权模块对直播进行鉴权,防止未授权的访问。

location /live {
    flv;
    root /usr/local/nginx/html;
    # 鉴权配置
    secure_link $arg_hash,$arg_expires;
    secure_link_md5 "$secure_link_expires$uri secret";
    if ($secure_link = "") {
        return 403;
    }
}

9.2 HTTPS 配置

若需要使用 HTTPS,可以通过 Nginx 的 SSL 模块进行配置。

server {
    listen 443 ssl;
    server_name your-domain;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    location / {
        root   html;
        index  index.html index.htm;
    }

    location /live {
        flv;
        root /usr/local/nginx/html;
    }
}

9.3 安全性配置

请注意配置服务器防火墙,仅开放必要的端口,限制访问来源,以提高服务器的安全性。

10. 总结

通过本文,你学会了在 CentOS 7 上搭建 Nginx + RTMP + nginx-http-flv-module 的流媒体服务。这种搭建方式可用于直播、视频会议等场景,同时支持 HTTP-FLV,方便在浏览器中进行播放。在实际应用中,可以根据需求进行更多的配置,以满足特定的业务需求。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 如何在CentOS 7上搭建Nginx + RTMP + nginx-http-flv-module的流媒体服务

发表回复