天天看点

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>

  • 一、 Nginx服务器的搭建
    • 1.1、国内大神编译windows版Nginx下载:
    • 1.2 国外大神所编译Windows版下载
  • 二、Windows-Nginx安装
  • 三、启动Nginx-Rtmp服务
    • 3.1 启动nginx方法一
    • 3.2启动nginx方法二(使用Nginx命令启动)
    • 3.3查看nginx是否启动
    • 3.4 停止nginx服务
  • 四、nginx 服务conf配置
    • 4.1 开启RTMP服务的配置
    • 4.2、开启写入权限
  • 五、推流到服务器
    • 5.1 推流方法一(选用OBS STUDIO软件)
      • 5.1.1 OBS设置
    • 5.2 推流方法二(选用ffmpeg软件)
  • 六、 服务器端HlS设置
    • 6.1服务器端的设置
    • 6.2 推流端设置
    • 6.3跨域代码
    • 6.4 VLC中的设置
    • 6.5服务器端文件夹的设置
    • 6.6 客户端VLC演示效果
  • 七、服务器端CONF配置文件设置所有代码
  • 九、点播配置

一、 Nginx服务器的搭建

笔者在搭建Windows-Nginx系统走了不少的弯路参考了大约上百篇文章的介绍搞得笔者一头的雾水可以说是到处是坑为了让网友不象我一样记录此文,希望能帮到你。看完此文无需在看其它文章。

下面是百度对Nginx系统的说明抄录于下:

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.1、国内大神编译windows版Nginx下载:

目前有国内大神编译有windows版本带有trmp模块的供下载:

博客地址:博客地址

windows版下载地址:windows版下载地址

下面是下载界面如下图(一):

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

下载解压后如图(二)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

点README.md可以看到 Nginx: 版本是1.14.1 Nginx-Rtmp-Module: 1.2.1如下图(三)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

1.2 国外大神所编译Windows版下载

国内博客介绍:国内博客对国外大神对WIN版介绍

国外下载地址:国外Win版下载地址

如图(四)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

如图(五)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

这个网站同时也提供了vcredist的下载(x86,x64),以避免运行nginx时出现缺少库的错误。

二、Windows-Nginx安装

笔者所用WIN版Nginx是国内大神编译系统就用国内版本做出说明。下载解压后安装包复制到C:盘根目录下所图(六)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

三、启动Nginx-Rtmp服务

3.1 启动nginx方法一

如图(七)所示双击nginx.exe或使用nginx命令图(九)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

3.2启动nginx方法二(使用Nginx命令启动)

打开CMD窗口进入根目录命令 CD

进入nginx-rtmp-win32-dev文件夹命令:cd nginx-rtmp-win32-dev

启动nginx命令 nginx.exe -c conf/nginx.conf 回车。这个命令是把配置文件一起读取

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

3.3查看nginx是否启动

键盘按下WIN+R 键 输入powershell命令如图(十)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

在powershell 输入 netstat -an 命令查看1395端口是否开启 如图(十一)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

1395端口如果显示说明nginx服务已经开启如图(十二)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

3.4 停止nginx服务

按键盘win+r盘 输入CMD 回车如图(十三)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

进入nginx-rtmp-win32-dev文件夹命令:cd nginx-rtmp-win32-dev

输入nginx.exe -s stop 命令回车 如图(十四)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

如果1395端口没有说明nginx服务停止如图(十五)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

四、nginx 服务conf配置

4.1 开启RTMP服务的配置

下面展示一些

rtmp代码

rtmp {
    server {
        listen 1935;
		chunk_size 4000; 
		application live {
            live on;
			 #为rtmp引擎设置最大连接数,默认off
			max_connections 1024;
			recorder rec1{
                #record all manual;  # 不自动启动录制,使用控制接口来启动/停止添加上manual 组合标识,下发录制指令start后才开始录制
				record all;  #表示推流的时候就开始录制
                record_unique on; # 是否添加时间戳到录制文件。否则的话同样的文件在每一次新的录制发生时将被重写。默认为 off。
                record_path d:/video;  # 保存路径:注意目录权限,确保有写入的权限
                record_suffix -%Y-%m-%d-%H_%M_%S.flv; # 设置录制文件后缀名,可以匹配 strftime 格式
				record_max_size 5M;  # 设置录制文件的最大值。
				
            }
        }
           

4.2、开启写入权限

如果推流没有保存到d:/video内设置一下文件夹属性右击属性->安全->高级->添加->选择主主->高级->立即查找->选择Guest如图(十六)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

选择修改、读取和执行、读取、写入。仅将这些权限应用到此窗口中的对象和/容器勾选。如图(十七)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

五、推流到服务器

5.1 推流方法一(选用OBS STUDIO软件)

OBS作为一款完全免费的直播软件,是一款非常实用经典的录制软件,专门用来录制直播用的,绝大多数的的主播门都喜欢用这款软件,也足够说明它的强大之处了,不管你是用来直播内容,使用它都可以做到得心应手。软件界面如图(十八)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

5.1.1 OBS设置

点击设置如图(十九)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

我的服务器地址是192.168.1.30 RTMP推流端口是1935(nginx-rtmp默认端口)live 是RTMP设置项与Nginx 配置中application live{live on}对应串流密钥test 在推流时将生成一个test文件大小为5M文件如图(二十)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

5.2 推流方法二(选用ffmpeg软件)

按win+r键 调出运行窗口输入cmd 回车打开cmd窗口,输入ffmpeg回车如图(二十一)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

输入ffmpeg -re -i “f:/黑客帝国2:重装上阵.mp4” -f flv “rtmp://192.168.1.30/live/test” 如图(二十二)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

ffmpeg的下载安装方法可以参考其它文献。ffmpeg的设置不在本章讨论范围内,有一点需要注意的是下载后的ffmpeg需要设置一下环境变量如果不设置要执行ffmpeg 就要到ffmpeg文件夹下执行ffmpeg命令。

六、 服务器端HlS设置

6.1服务器端的设置

下面展示一些

服务器端hls的设置片断

rtmp {
    server {
        listen 1935;
		chunk_size 4000;
         # video on demand
        
		application live {
            live on;
			 #为rtmp引擎设置最大连接数,默认off
			max_connections 1024;
			recorder rec1{
                #record all manual;  # 不自动启动录制,使用控制接口来启动/停止添加上manual 组合标识,下发录制指令start后才开始录制
				record all;  #表示推流的时候就开始录制
                record_unique on; # 是否添加时间戳到录制文件。否则的话同样的文件在每一次新的录制发生时将被重写。默认为 off。
                record_path d:/video;  # 保存路径:注意目录权限,确保有写入的权限
                record_suffix -%Y-%m-%d-%H_%M_%S.flv; # 设置录制文件后缀名,可以匹配 strftime 格式
				record_max_size 5M;  # 设置录制文件的最大值。
				#exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
            }
        }
		
		  application hls {
            live on; #启用rtmp直播
            hls on;   #启用hls直播
			hls_path d:/tmp/hls;  #录制保存地址这里用了绝对路径
            hls_fragment 3s;  #切片时间为3秒
			hls_sync 100ms; #音视频同步时间
			hls_cleanup on; #是否删除列表中已经没有的媒体块
			hls_playlist_length 120s;  #m3u8和ts在hls文件夹下的保存时间
			recorder rec {  #启用录制
              # record all manual;  #手动控制录制启停
               record all;  #表示推流的时候就开始录制
			   #record_suffix _rec.flv;
               record_path d:/tmp/hls;  #录制保存地址
               #record_unique on; # 是否添加时间戳到录制文件。
			   #exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
			}
        }
           

注意:hls因为使用http协议,所以请在配置中允许跨域,否则无法拉流。

6.2 推流端设置

这时如果路径下有.m3u8文件就能拉流了,举例如果上面路径中有一个A109.m3u8的文件,在VLC中输入http://192.168.1.30:8080/hls/A109.m3u8就可以拉流了。推流我们还是用OBS软件这个软件使用方便这次串流密钥我们设置为A109,推流地址是HLS如图(二十三)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

6.3跨域代码

下面展示一些

跨域代码片断

http {
    server {
        listen      8080;
		
        location / {
            root html;
			#index  index.html index.htm;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
			
        }
		#location /live {  #这里也是需要添加的字段。
		#types {  
			#application/vnd.apple.mpegurl m3u8;  
			#video/mp2t ts;  
		#}
		#alias d:/video;   
		#expires -1;
			#add_header Cache-Control no-cache;  
			#add_header Access-Control-Allow-Origin *;
            #add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            #add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
		
		#}  
		
		 #服务器状态
        location /stat { 
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root html;
        }
		location /control {
            rtmp_control all;
        }
        #hls直播地址
		location /hls {   
            #server hls fragments  
            types{  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            alias d:/tmp/hls;  #录制保存地址;  #看这里用了绝对路径  
            expires -1;  
			add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }  
           
下面是跨域代码
		add_header Cache-Control no-cache;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
           

6.4 VLC中的设置

如图(二十四所示)我的服务HTTP端口是8080所以这里要把端口输入进去。如果端口为80可以不用填写

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

6.5服务器端文件夹的设置

服务器端的文件夹我设置在D盘下有一个tmp文件在tmp下有一个hls文件夹。这个文件夹要注意权限的设置添加来宾Guests设置为能写入即可。关于Guests的设置上文已介绍过这里不在详述。如图(二十五)所示

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

文件夹设置好后推流就可以写数据到服务器文件夹中下图(二十六)看到有了m3u8文件

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

6.6 客户端VLC演示效果

如图(二十七)所示为hls播放效果

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

七、服务器端CONF配置文件设置所有代码

下面展示所有

配置文件

#user Guests;
worker_processes  1;

error_log  logs/error.log info;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;
		chunk_size 4000;
         # video on demand
        application vod {
                play  d:/tmp/hls;  #点播地址这里与推流地址一样1
        }
		 application vod2 {
                play  d:/tmp/hls2;  #点播地址这里与推流地址一样2
        }
		 application vod3 {
                play  d:/tmp/hls3;  #点播地址这里与推流地址一样3
        }
		 application vod4 {
                play  d:/tmp/hls4;  #点播地址这里与推流地址一样4
        }
		application live {
            live on;
			 #为rtmp引擎设置最大连接数,默认off
			max_connections 1024;
			recorder rec1{
                #record all manual;  # 不自动启动录制,使用控制接口来启动/停止添加上manual 组合标识,下发录制指令start后才开始录制
				record all;  #表示推流的时候就开始录制
                record_unique on; # 是否添加时间戳到录制文件。否则的话同样的文件在每一次新的录制发生时将被重写。默认为 off。
                record_path d:/video;  # 保存路径:注意目录权限,确保有写入的权限
                record_suffix -%Y-%m-%d-%H_%M_%S.flv; # 设置录制文件后缀名,可以匹配 strftime 格式
				record_max_size 5M;  # 设置录制文件的最大值。
				#exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
            }
        }
		
		  application hls {
            live on; #启用rtmp直播
            hls on;   #启用hls直播
			hls_path d:/tmp/hls;  #录制保存地址这里用了绝对路径
            hls_fragment 3s;  #切片时间为10秒
			hls_sync 100ms; #音视频同步时间
			hls_cleanup on; #是否删除列表中已经没有的媒体块
			hls_playlist_length 120s;  #m3u8和ts在hls文件夹下的保存时间
			recorder rec {  #启用录制
              # record all manual;  #手动控制录制启停
               record all;  #表示推流的时候就开始录制
			   #record_suffix _rec.flv;
               record_path d:/tmp/hls;  #录制保存地址
               #record_unique on; # 是否添加时间戳到录制文件。
			   #exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
			}
        }
		application hls2 {
            live on;  #启用rtmp直播
            hls on;   #启用hls直播
            hls_path d:/tmp/hls2; #录制保存地址这里用了绝对路径
            hls_fragment 3s;  #切片时间为10秒
			hls_sync 100ms; #音视频同步时间
			hls_cleanup on; #是否删除列表中已经没有的媒体块
			hls_playlist_length 120s;  #m3u8和ts在hls文件夹下的保存时间
			recorder rec2 {  #启用录制
              # record all manual;  #手动控制录制启停
               record all;  #表示推流的时候就开始录制
			   #record_suffix _rec.flv;
               record_path d:/tmp/hls2;  #录制保存地址
               #record_unique on; # 是否添加时间戳到录制文件。
			   #exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
			}
        }
		application hls3 {
            live on;
            hls on;
            hls_path d:/tmp/hls3;
            hls_fragment 3s;  #切片时间为10秒
			hls_sync 100ms; #音视频同步时间
			hls_cleanup on; #是否删除列表中已经没有的媒体块
			hls_playlist_length 120s;  #m3u8和ts在hls文件夹下的保存时间
			recorder rec3 {  #启用录制
              # record all manual;  #手动控制录制启停
               record all;  #表示推流的时候就开始录制
			   #record_suffix _rec.flv;
               record_path d:/tmp/hls3;  #录制保存地址
               #record_unique on; # 是否添加时间戳到录制文件。
			   #exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
			}
        }
		application hls4 {
            live on;
            hls on;
            hls_path d:/tmp/hls4;
            hls_fragment 3s;  #切片时间为10秒
			hls_sync 100ms; #音视频同步时间
			hls_cleanup on; #是否删除列表中已经没有的媒体块
			hls_playlist_length 120s;  #m3u8和ts在hls文件夹下的保存时间
			recorder rec {  #启用录制
              # record all manual;  #手动控制录制启停
               record all;  #表示推流的时候就开始录制
			   #record_suffix _rec.flv;
               record_path d:/tmp/hls4;  #录制保存地址
               #record_unique on; # 是否添加时间戳到录制文件。
			   #exec_record_done 'c:/nginx-rtmp-win32-dev/ffmpeg/bin/ffmpeg' -y -i d:/video/test/livestream.flv -vcodec libx264 -f mp4 d:/video/test/test_record.mp4 2>>d:/video/test/test_record.log;
			   #exec_record_done bash -c "ffmpeg -i $path -y -vcodec copy -acodec copy $dirname/$basename.mp4;rm -rf $path";
			}
        }
		
    }
}

http {
    server {
        listen      8080;
		
        location / {
            root html;
			#index  index.html index.htm;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
			
        }
		#location /live {  #这里也是需要添加的字段。
		#types {  
			#application/vnd.apple.mpegurl m3u8;  
			#video/mp2t ts;  
		#}
		#alias d:/video;   
		#expires -1;
			#add_header Cache-Control no-cache;  
			#add_header Access-Control-Allow-Origin *;
            #add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            #add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
		
		#}  
		
		 #服务器状态
        location /stat { 
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root html;
        }
		location /control {
            rtmp_control all;
        }
        #hls直播地址
		location /hls {   
            #server hls fragments  
            types{  
                application/vnd.apple.mpegurl m3u8;  
                video/mp2t ts;  
            }  
            alias d:/tmp/hls;  #录制保存地址;  #看这里用了绝对路径  
            expires -1;  
			add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }  
		
		location /hls2 {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias d:/tmp/hls2;
            expires -1;
			add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }
		location /hls3 {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias d:/tmp/hls3;
            expires -1;
			add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }
		location /hls4 {
            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias d:/tmp/hls4;
            expires -1;
			add_header Cache-Control no-cache;
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        }
		
    }
}


           

九、点播配置

下面展示一些

点播片断

# video on demand
        application vod {
                play  d:/tmp/hls;  #点播地址这里与推流地址一样1
        }
           

笔者定义了四个文件夹分别是hls、hls2、hls3、hls4目的是客户端推流文件放入不同的文件夹中以便管理。在推流的时候只要把推流地址分别对应这四个文件夹就可以。第一个客户可以是向服务器推流rtmp://192.168.1.30:1935/hls;第二个客户向服务器推流rtmp://192.168.1.30:1935/hls2;第三个客户rtmp://192.168.1.30:1935/hls3;第四个客户rtmp://192.168.1.30:1935/hls4/串流密钥可以自己定义

点播服务是客户端推流结束后服务器端会把推流的文件保存下来以供点播回看。只需要用浏览器或VLC播放器观看就可以如图(二十八)所示:

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

需要注意的是点事地址为rtmp://192.168.1.30:1935/vod/A109,这里不在是hls方法而是vod方法点播需要与你在服务器端配置的方法相一至

application vod {

play d:/tmp/hls;

}

application vod是服务器端配置的点播地址

如图(二十九)所示是点播演示效果

2021-02-05 Windows2012搭建Nginx-Trmp推拉流并将推流保存在服务器上供用户点播详解<亲测可行方案>)一、 Nginx服务器的搭建二、Windows-Nginx安装三、启动Nginx-Rtmp服务四、nginx 服务conf配置五、推流到服务器六、 服务器端HlS设置七、服务器端CONF配置文件设置所有代码九、点播配置

七、服务器端CONF配置文件设置所有代码是笔者在服务器端配置代码《复制》这段代码就可以在windows系统上正常运行。亲测可行方案。笔者服务器所用是windows2012操作系统。