概要
Nginx是一个高性能的开源Web服务器和反向代理服务器,也可以作为流媒体服务器来使用。它具有出色的性能、稳定性和灵活性,被广泛应用于构建高流量的网站、提供反向代理、负载均衡和提供流媒体服务等多种用途。
对于流媒体服务,Nginx可以通过以下两种方式来提供支持:
-
HTTP Live Streaming(HLS): Nginx可以作为一个HLS服务器来提供视频流。HLS是一种基于HTTP协议的流媒体传输协议,它将视频切分为小的ts(Transport Stream)片段,并通过HTTP协议进行分发。Nginx可以通过配置HLS模块来支持HLS流媒体服务。
-
Dynamic Adaptive Streaming over HTTP(DASH): Nginx也可以作为DASH服务器来提供自适应比特率的流媒体传输。DASH是一种通过HTTP协议传输的流媒体标准,它根据网络条件和客户端的能力动态调整视频的比特率。Nginx可以使用相应的模块(如nginx-rtmp-module)来支持DASH流媒体服务。
在本篇文章中,我主要记载了HLS方向的具体实现方式。
Download
首先你得清楚你是什么样的系统,windows的话需要特定的nginx版本支持,而centos则不必过多在意nginx的版本
nginx: download
https://github.com/arut/nginx-rtmp-module
FFmpeg
下载后就丢到服务器上,一个是nginx一个是nginx-rtmp-module插件,还有ffmpeg服务,我用来转流的
生产环节还是推荐使用stable稳定版本
安装
windows要单独说说,貌似需要装一个适配转流服务的特殊版本:nginx/1.7.11.3 Gryphon
这里我比较懒,没有放网盘,需要的私我好了
这里讲讲centos的安装
# 解压nginx压缩包
tar -zxvf nginx-XXX.tar.gz
# 安装或更新必要的底层环境
yum install -y gcc gcc-c++
yum install -y pcre-devel openssl-devel
# 进入解压文件并设定安装目录及一些额外的配置
# /path/to/nginx-rtmp-module换成你下载下来的nginx-rtmp-module源码地址
cd nginx-XXX
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/path/to/nginx-rtmp-module
# -with-http_ssl_module选项用于设置在Nginx中允许使用http_ssl_module模块的相关功能
# --with-http_stub_status_module提供了一个简单的HTTP接口,用于获取nginx服务器的实时状态信息,例如当前活动连接数、请求统计和处理状态等。通过使用stub_status模块,你可以监控nginx服务器的性能和连接状态,并进行故障排除和性能优化。
# --with-http_flv_module选项启用FLV模块。如果你还需要使用RTMP模块,需要添加--with-http_ssl_module、--with-http_flv_module和--add-module=/path/to/nginx-rtmp-module选项,将/path/to替换为nginx-rtmp-module源码所在的路径。
# 执行编译安装
make && make install
# 加入环境变量
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
# 添加系统服务
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=default.target
# 给服务配置提权
chmod 755 /usr/lib/systemd/system/nginx.service
启动: systemctl start nginx
停止: systemctl stop nginx
重启: systemctl restart nginx
重新加载配置文件: systemctl reload nginx
查看nginx状态: systemctl status nginx
开机启动: systemctl enable nginx
nginx配置文件:/usr/local/nginx/conf/nginx.conf
nginx服务所在位置:/usr/local/nginx/sbin/nginx
流媒体服务
windows放置好rtmp插件nginx-rtmp-module到nginx同级目录上
centos已经在上面的安装中介绍了nginx-rtmp-module,安装的时候就要配
#user nobody;
# multiple workers works !
worker_processes 2;
#error_log logserror.log;
#error_log logserror.log notice;
#error_log logserror.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
rtmp
{
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow play all;
# 视频存储目录
play C:/Users/Administrator/AA/nginx/vdo;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 1024m;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8090;
server_name localhost;
add_header Access-Control-Allow-Origin *;
#charset koi8-r;
#access_log logs/host.access.log main;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root C:/Users/Administrator/AA/nginx/www;
expires -1;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
rtmp {
server {
listen 19351;
publish_time_fix on;
application myapp {
live on; #stream on live allow
allow publish all; # control access privilege
allow play all; # control access privilege
}
application hls {
live on;
hls on; #这个参数把直播服务器改造成实时回放服务器。
hls_path C:/Users/Administrator/AA/nginx/www/hls; #切片视频文件存放位置。
wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。
hls_fragment 10s; #每个视频切片的时长。
hls_playlist_length 30s; #总共可以回看的事件,这里设置的是1分钟。
hls_continuous on; #连续模式。
hls_cleanup on; #对多余的切片进行删除。
hls_nested on; #嵌套模式。
}
}
}
这个配置包含了三种流媒体服务方式,从上往下依次是:
本地视频流媒体服务(将本地视频开放出来)
请求链接示例:http://localhost:1935/live/b.mp4
第三方转流/本地m3u8流视频(将ffmpeg转流后的m3u8开放出来)
请求链接示例:http://localhost:8090/hls/b.m3u8
hls流媒体服务(将本地视频开放出来)
没用过
今天的文章nginx搭建rtmp流媒体服_基于docker搭建局域网服务器分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87288.html