音视频应用开发——将nginx-http-flv-module插件重新编译到ngix中并部署

一、准备

1、资源

1、nginx源码

2、nginx-http-flv-module插件

3、openssl-1.0.1u

4、pcre-8.34

5、zlib-1.2.11

这里版本对变异结果也有影响,其他版本有编译失败的情况,推荐固定这几个版本

2、编译工具

1、mingw

2、perl

3、nasm

4、sed

安装完成后需要把根目录添加进系统环境变量

3、编译器

MSVC

由于需要使用cl.exe、link.exe和VS2015本机工具命令提示符工具,最好安装Visual Studio 2015

安装Visual Studio 2015默认不带c++编译器,安装的时候需要手动勾选C++选项才会有cl.exe编译器和link.exe工具(默认在C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin下)。安装完成后将cl.exe所在目录添加到系统环境变量

二、开始编译

1、新建文件夹nginx-flv并解压nginx源码到nginx-flv下

2、在nginx-flv下新建文件夹build,进入build,在build下新建文件夹3rdlib和output

3、将nginx-http-flv-module,openssl,zlib,pcre解压缩到nginx-flv/build/3rdlib目录下

4、在nginx-flv目录下新建build.bat文件并输入以下脚本

auto/configure --with-cc=cl --builddir=build/output --prefix= \
--conf-path=conf/nginx.conf --pid-path=logs/nginx.pid \
--http-log-path=logs/access.log --error-log-path=logs/error.log \
--sbin-path=nginx-flv.exe --http-client-body-temp-path=temp/client_body_temp \
--http-proxy-temp-path=temp/proxy_temp \
--http-fastcgi-temp-path=temp/fastcgi_temp \
--http-scgi-temp-path=temp/scgi_temp \
--http-uwsgi-temp-path=temp/uwsgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=build/3rdlib/pcre-8.34 \
--with-zlib=build/3rdlib/zlib-1.2.11 --with-openssl=build/3rdlib/openssl-1.0.1u \
--with-select_module --with-http_ssl_module \
--add-module=build/3rdlib/nginx-http-flv-module-master

5、最终目录结构

nginx-flv
├─auto
├─build
│  ├─3rdlib
│  │  ├─nginx-http-flv-module-master 
│  │  ├─openssl-1.0.1u
│  │  ├─pcre-8.34   
│  │  └─zlib-1.2.11
│  └─output
├─conf   
├─contrib           
├─docs        
├─misc   
├─src 
└─build.bat

6、打开mingw命令行工具(默认在C:\MinGW\msys\1.0\msys.bat)进入nginx-flv目录执行build.bat,结束后会在nginx-flv/build/output目录下生成Makefile

7、以管理员身份打开VS2015本机工具命令提示符x86进入nginx-flv目录后运行

nmake /f build/output/Makefile

过程大概十分钟,编译完成后会在nginx-flv/build/output目录下生成nginx.exe

三、部署

1、新建文件夹 nginx-rtmp

2、将刚刚编译生成的nginx.exe拷贝到nginx-rtmp目录下

3、将nginx源码目录下的conf文件夹拷贝到nginx-rtmp目录下

4、将nginx源码目录下的docs/html文件夹拷贝到nginx-rtmp目录下

5、在nginx-rtmp目录下新建logs和temp文件夹

6、将nginx-http-flv-module目录下的stat.xsl拷贝到nginx-rtmp/html目录下

7、配置conf/nginx.conf文件

worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  logs/error.log  debug;
 
#pid        logs/nginx.pid;
 
events {
    worker_connections  1024;
}
 
# 添加RTMP服务
rtmp {
    server {
        listen 1935; # 监听端口
 
        chunk_size 4000;
        application live {
            live on;
			gop_cache on;
        }
    }
}
 
# HTTP服务
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    #access_log  logs/access.log  main;
 
    server {
        listen       8080; # 监听端口
 
		location /stat.xsl {
            root html;
        }
		location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
		location / {
            root html;
        }
    }
}

8、整个服务部署文件构架如下

nginx-rtmp
│  nginx.exe
│  
├─conf
│      fastcgi.conf
│      fastcgi_params
│      koi-utf
│      koi-win
│      mime.types
│      nginx.conf
│      scgi_params
│      uwsgi_params
│      win-utf
│      
├─html
│      50x.html
│      index.html
│      stat.xsl
│      
├─logs
│      access.log
│      error.log
│      
└─temp
    ├─client_body_temp
    ├─fastcgi_temp
    ├─proxy_temp
    ├─scgi_temp
    └─uwsgi_temp

9、启动nginx

(1)、进入nginx-rtmp目录下双击 nginx.exe

(2)、cmd命令行进入nginx-rtmp目录下执行

start /b nginx.exe -c conf\nginx.conf

10、使用ffmpeg推流,VLC拉流

11、网页打开http://localhost:8080/stat可以看到nginx媒体流的状态

12、关闭nginx

​ cmd命令行进入nginx-rtmp目录下执行

nginx.exe –s stop

原文链接:

编译:https://blog.csdn.net/kaychangeek/article/details/105095844

部署:https://blog.csdn.net/KayChanGEEK/article/details/105098588

上一篇:如何修改iframe调取视频流的格式?


下一篇:前端实现直播功能