1 概述nginx
rtmp流媒体服务器,开源方案有多种,包括srs,red5,crtmpserver,fms,nginx插件等。本文描述了基于nginx插件的方式来实现rtmp流媒体服务器nginx-rtmp,该插件能够基于开源的nginx-rtmp-module。git
本文是基于windows 10 x64操做系统下编译出32位的nginx-rtmp,即相关编译环境是32位的。github
相关开源项目以下:windows
nginx(https://github.com/nginx/nginx)服务器
nginx-rtmp-module(https://github.com/arut/nginx-rtmp-module)工具
2 准备测试
介绍编译所须要的第三方工具、第三方库、源码库、IDE。ui
2.1 第三方工具spa
2.1.1 perl操作系统
perl安装包,运行ActivePerl-5.24.3.2404-MSWin32-x64-404865.exe,默认安装便可,安装完成,在cmd下使用perl -v测试perl是否安装成功。
2.1.2 mingw
MinGW环境安装包,主要是提供MSYS环境,运行mingw-get-setup.exe安装MinGW,默认安装便可,安装完成运行,勾选mingw32-base.bin、msys-base.bin功能,选择菜单Installation-Apply Changes。
2.1.3 sed
sed安装包,运行sed-4.2.1-setup.exe,默认安装便可,安装完成,将默认安装目录C:\Program Files (x86)\GnuWin32\bin添加到系统环境变量Path。
2.2 第三方库
2.2.1 openssl
openssl-1.0.1u,高版本的OpenSSL库编译会报错。
2.2.2 pcre
pcre-8.34。
2.2.3 zlib
zlib-1.2.11。
2.2.4 rtmp插件
nginx-rtmp-module,github下载目前最新的版本。
2.3 源码库
2.3.1 nginx
nginx-1.15.8,github下载目前最新的版本。
2.4 IDE
2.4.1 VS2013
基于VC2013编译环境,须要安装VS2013 IDE。安装包,vs2013.2_ult_chs.iso。
3 目录结构
建立根目录nginx-rtmp,将nginx源码解压到该目录。以下图所示:
在nginx-rtmp目录建立build、build/obj和build/lib两级目录,并将openssl,pcre,zlib,rtmp库拷到build/lib目录,以下图所示:
并在源码目录下建立build.bat,内容以下:
auto/configure --with-cc=cl --builddir=build/obj --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=build/lib/pcre-8.34 \ --with-zlib=build/lib/zlib-1.2.11 --with-openssl=build/lib/openssl-1.0.1u \ --with-select_module --with-http_ssl_module \ --add-module=build/lib/nginx-rtmp-module |
4 编译
4.1 配置OpenSSL环境
打开cmd,切到openssl所在目录nginx-rtmp\build\lib\openssl-1.0.1u\,执行以下命令:
perl Configure VC-WIN32
ms\do_ms
4.2 MSYS环境
转到目录C:\MinGW\msys\1.0\,执行msys.bat,进入msys环境,以下图所示:
切到nginx-rtmp目录
运行build.bat,生成Makefile
执行完成,nginx-rtmp\build\obj生成以下文件:
打开VC2013命令行工具,切到nginx-rtmp目录,执行nmake /f build/obj/Makefile
编译完成,在nginx-rtmp\build\obj生成nginx.exe。
5 测试
在目录nginx-rtmp\build\obj\建立nginx.exe运行所需的目录:conf、logs、temp,将nginx-rtmp\build\lib\nginx-rtmp-module\test\nginx.conf拷贝至nginx-rtmp\build\obj\conf目录,双击运行nginx.exe(中止运行nginx命令为nginx.exe –s stop)。能够经过ffmpeg推流到指定rtmp流地址,经过vlc播放器来播放该rtmp流。
ffmpeg将本地mp4视频文件推流命令行以下:
ffmpeg.exe -re -i test.mp4 -f flv rtmp://localhost:1935/live/test