nginx搭建rtmp流媒体服_基于docker搭建局域网服务器

nginx搭建rtmp流媒体服_基于docker搭建局域网服务器Nginx可以使用相应的模块(如nginx-rtmp-module)来支持DASH流媒体服务

nginx搭建rtmp流媒体服_基于docker搭建局域网服务器"

概要

Nginx是一个高性能的开源Web服务器和反向代理服务器,也可以作为流媒体服务器来使用。它具有出色的性能、稳定性和灵活性,被广泛应用于构建高流量的网站、提供反向代理、负载均衡和提供流媒体服务等多种用途。

对于流媒体服务,Nginx可以通过以下两种方式来提供支持:

  1. HTTP Live Streaming(HLS): Nginx可以作为一个HLS服务器来提供视频流。HLS是一种基于HTTP协议的流媒体传输协议,它将视频切分为小的ts(Transport Stream)片段,并通过HTTP协议进行分发。Nginx可以通过配置HLS模块来支持HLS流媒体服务。

  2. 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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注