Loading... # 引言 突然想搞搞视频推流,nginx本身也是实时服务,nginx也可以做到,但是官网上下载的并不会引入RTMP包,找别人编译好的版本又太低,所以自己动手啦。 <div class="tip inlineBlock warning"> 本文章也是本人操作的记录,如果当作教程,建议先大体上浏览一下这篇文章,再操作。 </div> 其实按照官网上的也能编译成功,只不过对于我这种菜鸟实在是太不友好了,实际上也就是做了官网上所说的那些。 > 曾经也尝试过好多次,但是都以失败告终。 > 失败的原因,安装了pentestbox,里面集成了好多工具,并且加入到了环境变量,导致用的都是pentestbox中的软件,可能是版本太低或者是其它原因,导致nmake失败,所以建议失败的时候,通过where检查一下所用的编译工具是否是我们真正需要的那个。 # 准备工作 参考文献:http://nginx.org/en/docs/howto_build_on_win32.html 下载的源码不要在`http://nginx.org/en/download.html`那个页面下载。 下载生成工具 [visual studio](https://visualstudio.microsoft.com/zh-hans/) 下载源码: [nginx](http://hg.nginx.org/nginx) 下载依赖包: [zlib](http://zlib.net/) [openssl](https://www.openssl.org/source) [pcre2](https://github.com/PCRE2Project/pcre2/releases/) [msys2](https://www.msys2.org/) [Strawberry Perl](http://strawberryperl.com/) 在nginx源码目录中创建\objs\lib目录,把zlib, openssl, pcre2解压到这里,现在不需要编译哦,源码扔进来就可以了,如果需要引入其它的模块,也可以顺便放进来。 如图所示: ![image.png](https://www.zunmx.top/usr/uploads/2023/04/3980612513.png) ## 版本信息 | 软件 | 版本 | | --- | --- | | VS | 2022 | |zlib | 1.2.13 | |pcre | 2-10.43 | |openssl | 3.1.0 | |perl | 5.32.1.1 | # msys2进行生成安装配置 打开msys2,会进入一个黑窗口,在这里进行熟悉的configure操作。 ⚠这里需要按需配置,就比如说我引入了rtmp,在这里配置的 ⚠openssl zlib pcre2 的路径要和实际的保持一致 ```bash auto/configure \ --with-cc=cl \ --with-debug \ --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.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=objs/lib/pcre2 \ --with-zlib=objs/lib/zlib \ --with-openssl=objs/lib/openssl \ --with-openssl-opt=no-asm \ --with-http_ssl_module \ --add-module=objs/lib/nginx-rtmp-module \ --with-http_ssl_module \ --with-http_v2_module \ --with-stream \ --with-stream_ssl_module \ --with-http_dav_module \ --with-http_realip_module \ --with-http_auth_request_module ``` ![image.png](https://www.zunmx.top/usr/uploads/2023/04/2136365122.png) # nmake安装 找到这个东东 ![image.png](https://www.zunmx.top/usr/uploads/2023/04/380130703.png) 切换到nginx源码路径 <div class="tip inlineBlock info"> 如果是对照着文章,一边操作,请再往下看几行。 </div> 在这里输入`nmake` 经过漫长的等待,迎来了<span style='color:#FF0000'>报错</span> ```bash objs/lib/nginx-rtmp-module/ngx_rtmp_core_module.c(611): error C2220: 以下警告被视为错误 objs/lib/nginx-rtmp-module/ngx_rtmp_core_module.c(611): warning C4456: “sa”的声明隐藏了上一个本地声明 objs/lib/nginx-rtmp-module/ngx_rtmp_core_module.c(506): note: 参见“sa”的声明 ``` 这里需要修改一下配置。 源码路径\objs\Makefile 第三行的 ``` CFLAGS = -O2 -W4 -WX -nologo -MT -Zi -Fdobjs/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H ``` 改成 ``` CFLAGS = -O2 -W3 -nologo -MT -Zi -Fdobjs/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H ``` # 编译完成 ![image.png](https://www.zunmx.top/usr/uploads/2023/04/2486713739.png) ![image.png](https://www.zunmx.top/usr/uploads/2023/04/3235200318.png) # 测试 这里我是直接替换了原来的nginx.exe nginx -v > nginx version: nginx/1.24.0 ## 推流测试 ```bash ffmpeg -re -i F:\Videos\短视频\大国民——郑智化.mp4 -f flv rtmp://127.0.0.1:1935/live/123 ``` ![image.png](https://www.zunmx.top/usr/uploads/2023/04/608985803.png) ## HTTP 测试 ![image.png](https://www.zunmx.top/usr/uploads/2023/04/3549387465.png) ## HTTPS测试 ![image.png](https://www.zunmx.top/usr/uploads/2023/04/1480804166.png) # 按需下载 如果有人需要支持rtmp的nginx,可以直接下载哦。 [nginx.rar](https://www.zunmx.top/usr/uploads/2023/04/490141401.rar) # 结语 编译过程是真的太慢了,当我查看文件夹大小的时候,吓到我了。经过检查,是openssl的test目录很占地方,具体这个test是干嘛的就没时间研究了。完结。 ![image.png](https://www.zunmx.top/usr/uploads/2023/04/3281686140.png) © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏