windows下搭建nginx-rtmp服务器rtmp服务器搭建
- windows下搭建nginx-rtmp服务器
- 准备工作
- 安装MinGW
- 安装Mercurial
- 安装strawberryperl
- 安装nasm
- 下载nginx相关的源码包
- 编译nginx
- nginx-rtmp环境搭建
- 效果测试
- 最后说明
最近因为接触直播相关的技术工作,使用的也是基于高并发和高性能的nginx,首先需要做的当然是搭建一个nginx服务器。
对于linux上nginx服务器的搭建此处就不再赘述,按照操作指引来的话一般都能顺理成章搭建起来。
对于linux操作不熟练的手残党来说,当然是希望能在windows下也能用上这一套。刚开始在windows下搭建环境的时候遇到了很多问题,后面逐个解决花费不少功夫,怕以后忘了,就把我在windows下编译nginx和搭建RTMP直播服务器的过程记录下来,权当做个备忘。
准备工作
- 安装MinGW在这些准备工作之前,你的电脑上至少安装有一款IDE,我的是VS2008。 首先安装MinGW,后面的nginx编译需要先在msys环境下进行。 安装方式可以有在线安装和离线安装两种方式,离线安装的话过程很繁琐,需要自己下载各种包解压、配置路径等等操作,所以此处采用无脑式的在线安装进行说明。 由于MinGW的很多资源包都是在sourceforge上下载的,国内虽然能访问,但是速度奇慢,在线安装过程中经常会出现下载组件失败,强烈建议FQ安装。
然后,选择Installation菜单中Apply Changes进行在线下载和安装,整个过程可能会持续十几分钟。
当然后续有需要可以再利用这个安装界面进行组件的更改或者删除
如果安装过程中出现组件下载失败的情况,直接确定继续往下,安装程序会在所有的依赖包下载完成之后进行解压安装,执行完成后,在不关闭安装界面的前提下,回到上面的第二个步骤再来一遍,一直到没有安装错误。
MinGW的安装目录下也会有msys的目录,进入该目录里面,会看到有个批处理文件 msys.bat,可以把它创建到桌面作为快捷方式,双击进去就进入msys环境了。使用上和linux终端类似,不过是个精简版的,命令没有linux下的全,可以使用mingw-get命令进行在线安装某些包,比如,要安装gdb,直接输入命令 mingw-get install gdb。
MinGW正常安装的话,一般会自动将路径加入到环境变量。如果在使用中出现问题,检查下是不是因为路径设置的原因,手动将 $MinGW安装目录\bin 和 $MinGW安装目录\msys\1.0\bin 加入到windows的PATH环境变量。
- 安装MercurialMercurial是一个版本管理工具,后面我们需要用它下载windows下的nginx源码。
- 安装strawberryperlStrawberry Perl是Windows环境的Perl环境,包含了运行和开发Perl应用程序所需的全部内容,它的目的是尽可能接近UNIX系统上的Perl环境,后面在编译nginx及其依赖库的时候需要用到。
- 安装nasmNASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性,至于为什么要安装这货,后面再说。
- 下载nginx相关的源码包搭建nginx-rtmp服务器需要下载nginx源码和nginx-rtmp-module源码。以及nginx依赖的组件。 后面将要在msys下进行配置,不像linux下直接可以使用yum install xxx-devel的形式安装依赖的组件包头。所以需要将nginx相关的源码包悉数下载好,注意是源码包,因为nginx编译时需要引用这些依赖库的开发标头。
-
nginx
linux下的nginx源码包可以直接去nginx网站下载,但是上面的源码包只有linux的,源码的os文件夹下仅有unix平台的。而windows只有编译好的文件。这里就需要使用Mercurial下载带有win32平台的nginx源码包。
在cmd中执行命令 hg clone http://hg.nginx.org/nginx nginx-win32-src 下载最新的nginx代码,耐心等待源码down到本地,也可以下载指定的版本,具体参考 hg help 。 -
nginx-rtmp-module
作为nginx外接的扩展模块,将用作后面搭建RTMP直播环境的一部分
使用Git或者SVN等工具或者直接去GitHub上下载nginx-rtmp-module - pcre
- zlib
- openssl
- 以下是我使用的几个源码包的版本:
nginx-release-1.31.1 tag
nginx-rtmp-module-1.1.11.tar.gz
pcre-8.40.tar.gz
zlib-1.2.11.tar.gz
openssl-1.0.2l.tar.gz
编译nginx
auto/configure --with-cc=cl --builddir=objs --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 \
--with-cc-opt=-DFD_SETSIZE=1024 \
--with-select_module \
--with-debug \
--with-http_ssl_module \
--with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2l \
--add-module=../nginx-rtmp-module-1.1.11
这里会发现有一个异样的提示,auto/cc/msvc: line 117: [: : integer expression expected ,只要修改文件 $nginx源码目录\auto\cc\msvc 即可,在 echo " + cl version: $NGX_MSVC_VER" 的前面加入一行 NGX_MSVC_VER=15.00 ,当然不修改也不会影响后续的编译。
如果需要指定后续编译nginx时禁用优化,则将其中的 CFLAGS="$CFLAGS -O2"修改为 CFLAGS="$CFLAGS -Od" 。
到这里为止,msys的使命就完成了。
此时,之前安装的NASM就该登场了。
打开文件 $nginx源码目录\auto\lib\openssl\makefile.msvc,将其中的
ms\do_ms
修改为
ms\do_nasm
然后,删除openssl源码目录中的out32和tmp32两个临时目录,重新启动Visual Studio 2008 命令提示,再次执行前面的第五步就可以了。
nginx-rtmp环境搭建
在当前nginx目录中,启动windows命令行,运行 start /b nginx.exe -c conf\nginx.conf 这样nginx服务就在后台启动了。在浏览器中输入地址进入到nginx服务的主页,如果可以看到如下内容,说明整个环境已经OK,接下来可以使用推流和拉流看看实际效果了。最后使用命令 nginx.exe -s stop 优雅地终止nginx服务。
效果测试
接下来的效果测试,对环境稍微做了一点点改动,使用nginx-rtmp-module中提供的JWPlayer的Play页面进行拉流或者Record页面进行推流。
file: "rtmp://localhost/myapp?carg=1/mystream?sarg=2" 修改为
file: "rtmp://localhost/live?carg=1/test?sarg=2" 以保持和上面的配置文件一致。
'streamer': 'rtmp://localhost/myapp', 修改为
'streamer': 'rtmp://localhost/live' 以保持和上面的配置文件一致。
ffmpeg -re -i "F:\TDDownload\BBC记录片\BBC理查德哈蒙德:看不见的世界BD中字-cd1.mkv" -vcodec copy -f flv rtmp://192.168.100.2/live/test
输入流地址rtmp://192.168.100.2/live/test 拉流,还可利用 ffplay rtmp://192.168.100.2/live/test 拉流。
最后说明
本来还试着在移动端试试播放效果,不过JWPlayer貌似是不支持直接在html页面进行rtmp直播,不过可以下载一个app(易推流)进行rtmp的直播测试。
有关nginx-rtmp服务器的搭建过程到此就算全部完成了,在此过程中当然也不全是靠我自己的摸索,也参考了前辈或同行的经验,在此感谢那些曾经的贡献者,参考资料如下:
windows下搭建基于nginx的rtmp服务器rtmp服务器搭建
windows上搭建nginx rtmp服务器并使用ffmpeg windows安装nginx服务
windows下搭建NFS服务器windows server ftp服务器搭建
windows本地搭建nginx转发 windows搭建nginx服务器
Windows nginx-rtmp搭建RTMP服务器win10搭建ftp服务器
创建nginx windows服务 如何搭建nginx服务器
WINDOWS下搭建LDAP服务器mqtt服务器搭建 windows
windows搭建ntp服务器windows搭建ntp时间服务器