Nginx:使用 RTMP 模块进行直播
HLS 是最常见的视频流媒体协议,HLS 是一种自适应流媒体技术,可以根据用户的设备和网络条件对播放媒体内容,以获得最佳播放性能。
借助 Nginx RTMP 模块,为服务器添加 RTMP 和 HLS流 直播功能。
环境准备
首先确保你的CentOS 7系统是最新的,并且已经安装了基本的开发工具和库,比如 gcc
、make
、git
等。可以通过以下命令安装这些工具:
sudo yum install -y gcc make git
安装Nginx
Nginx不包含在CentOS的默认仓库中,因此需要添加EPEL(Extra Packages for Enterprise Linux)仓库:
sudo yum install -y epel-release
安装Nginx:
sudo yum install -y nginx
安装完成后,启动Nginx服务,并设置为开机启动:
sudo systemctl start nginx
sudo systemctl enable nginx
编译安装Nginx RTMP模块
由于RTMP模块不是Nginx的标准部分,所以需要单独编译安装。首先,下载Nginx和nginx-rtmp-module的源代码:
cd /usr/local/src
sudo git clone https://github.com/arut/nginx-rtmp-module.git
sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
sudo tar zxvf nginx-1.18.0.tar.gz
接下来,编译Nginx并添加RTMP模块:
cd nginx-1.18.0/
sudo ./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module
sudo make
sudo make install
默认的安装Nginx地址为/usr/local/nginx/
,可执行文件为/usr/local/nginx/sbin/nginx
,用改可执行文件替换原本装有的 Nginx 的可执行文件。
创建文件夹
为 HLS 准备文件夹:
mkdir /mnt/hls
chown -R nginx:nginx /mnt/hls
配置Nginx和RTMP
编辑 Nginx 的配置文件,添加 RTMP 支持,同时打开 HLS 的转换。打开 /usr/local/nginx/conf/nginx.conf
文件,在文件末尾添加 RTMP 配置:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
hls on;
hls_path /mnt/hls; #hls的ts切片存放路径
hls_fragment 3s;
hls_playlist_length 60s;
}
}
}
在 Server 段添加对请求路径 /hls
的访问,从 /mnt/hls
下读取 .m3u8
文件
location /hls {
# Disable cache
add_header Cache-Control no-cache;
# CORS setup
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length';
# allow CORS preflight requests
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /mnt/;
}
如果需要 record
则可以参照这篇博客
Last modified on 2024-08-06