在现代网络直播和视频流服务中,Nginx作为高性能的HTTP服务器,结合RTMP(Real-Time Messaging Protocol)和nginx-http-flv-module,可以实现流媒体的传输与播放。本文将介绍如何在CentOS 7上搭建Nginx + RTMP + nginx-http-flv-module环境。

一、环境准备

  1. 更新系统软件包

打开终端,执行以下命令更新系统的软件包:

sudo yum update -y
  1. 安装基础依赖

安装开发工具和开发库,以支持后续的Nginx编译:

sudo yum groupinstall "Development Tools" -y
sudo yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

二、安装Nginx和RTMP模块

  1. 下载Nginx源代码

访问nginx官网下载最新的Nginx版本。在本文中,我们以1.21.3版本为例:

cd /usr/local/src
sudo wget http://nginx.org/download/nginx-1.21.3.tar.gz
  1. 解压Nginx源代码
sudo tar -zxvf nginx-1.21.3.tar.gz
  1. 下载RTMP模块

使用Git克隆RTMP模块的代码库:

sudo git clone https://github.com/arut/nginx-rtmp-module.git
  1. 编译Nginx并添加RTMP模块

进入Nginx源代码目录,执行以下命令编译Nginx:

cd nginx-1.21.3
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install

Nginx默认安装路径为/usr/local/nginx

三、配置Nginx

  1. 编辑Nginx配置文件

打开Nginx配置文件,通常是/usr/local/nginx/conf/nginx.conf,进行如下配置:

# 在http部分之前添加
rtmp {
    server {
        listen 1935; # RTMP端口
        chunk_size 4096;

        application live {
            live on;
            record off; # 不记录流,若需要可以设置为 'record all;' 
        }
    }
}

# http部分
http {
    ...

    server {
        listen 8080; # HTTP FLV播放端口
        location /live {
            flv;
            proxy_pass http://localhost:1935/live;
        }
    }
}
  1. 启动Nginx

使用以下命令启动Nginx:

sudo /usr/local/nginx/sbin/nginx

如果需要重新加载配置,请使用:

sudo /usr/local/nginx/sbin/nginx -s reload

四、推流与播放

  1. 推流

使用推流工具(如OBS Studio或FFmpeg)进行流媒体推送。以下是使用FFmpeg的推流示例:

ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 1000k -bufsize 2000k -c:a aac -b:a 128k -f flv rtmp://your_server_ip/live/stream
  1. 播放

在浏览器中播放流媒体,可以通过以下HTML代码进行播放(使用flv.js等库):

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>直播测试</title>
    <script src="https://cdn.jsdelivr.net/npm/flv.js/dist/flv.min.js"></script>
</head>
<body>
    <video id="videoElement" controls></video>
    <script>
        var video = document.getElementById('videoElement');
        if (flvjs.isSupported()) {
            var flvPlayer = flvjs.createMediaPlayer({
                type: 'flv',
                url: 'http://your_server_ip:8080/live/stream.flv'
            });
            flvPlayer.attachMediaElement(video);
            flvPlayer.load();
            flvPlayer.play();
        }
    </script>
</body>
</html>

五、总结

通过以上步骤,我们在CentOS 7上成功搭建了一个基于Nginx + RTMP + nginx-http-flv-module的流媒体服务。这个平台可以用于实时视频直播、录播回放等场景。在实际应用中,还可以通过SSL/TLS等方式进一步增强安全性,以满足更高的直播需求。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部