windows 10下基于MinGW编译nginx 和 nginx-rtmp-model 搭建流媒体服务器

2 篇文章 0 订阅

windows 10下基于MinGW编译nginx 和 nginx-rtmp-model 搭建流媒体服务器

因最近项目需求,在设备端需要统一播放视频,因此我就想搭建一个流媒体服务器,然后在项目的信息管理平台系统上统一向设备端推流,以下是在windows下编译nginx+nginx-rtmp-model及搭建流媒体服务器的过程。

编译的操作系统为 windows 10

编译环境为 Visual Studio 2010 (建议用这个版本,这是官方推荐的版本)

环境配置与准备工作,顺序安装以下各软件

  • 安装MinGW
  • 安装Mercurial
  • 安装strawberryperl
  • 安装nasm
  • 安装sed
  • 下载nginx及相关依赖的源码包
  • 编译nginx及nginx-rtmp-model
  • 启动流媒体服务器
  • 使用FFMpeg推流和拉流

准备工作

  1. 安装MinGW

    首先安装MinGW,后面的nginx编译需要先在msys环境下进行,安装方式可以有在线安装和离线安装两种方式,离线安装的话过程很繁琐,需要自己下载各种包解压、配置路径等等操作,所以此处采用无脑式的在线安装进行说明,由于MinGW的很多资源包都是在sourceforge上下载的,国内虽然能访问,但是速度奇慢,请耐心等待,如果多次安装失败强烈建议翻墙安装。

http://www.mingw.org/找到MinGW安装引导程序mingw-get-setup.exe的链接地址并下载,安装引导程序不到100KB。执行安装工具,开始选择安装路径时要注意,不要将MinGW安装到带有空格或者中文路径的目录下,本教程默认把MinGW安装在C:\MinGW下

默认情况下,在下载完成后会在桌面生成一个MinGW Installer快捷图标,如果没有,也可以去MinGW安装目录中找到, C:\MinGW\libexec\mingw-get\guimain.exe。

接下来运行安装之后的快捷图标,选择要在线安装的组件,此处只需选择Basic Setup下msys及gcc相关组件就行了,选择过程中会提示有些组件找不到,不用管它继续后面的步聚。 然后,选择Installation菜单中Apply Changes进行在线下载和安装,整个过程可能会持续十几分钟,后续也可以再利用这个安装界面进行组件的更改或者删除,选择完需要的组件后如下图所示:

注:如果安装过程中出现组件下载失败的情况,直接确定继续往下,安装程序会在所有的依赖包下载完成之后进行解压安装,执行完成后,在不关闭安装界面的前提下,回到上面的第二个步骤再来一遍,一直到没有安装错误。

至此,MinGW的成功安装后,勾选的项目会变成浅绿色填充,如下图所示:

MinGW安装完成后在其安装目录下会有msys的目录,进入该目录里面,会看到有个批处理文件 msys.bat,可以把它创建到桌面作为快捷方式,双击进去就进入msys环境了。使用上和linux终端类似,不过是个精简版的,命令没有linux下的全,可以使用mingw-get命令进行在线安装某些包,比如,要安装gdb,直接输入命令 mingw-get install gdb,如下图所示:

MinGW安装完成后将 C:\MinGW\bin  加入到windows的PATH环境变量中

2.安装Mercurial 点击下载

 Mercurial是一个版本管理工具

安装时要将安装目录选择在没有空格和中文目录的路径下。安装完成后,把安装目录加入到windows的PATH环境变量,在cmd中执行命令 hg,如果有以下显示则表示安装成功了:

3.安装strawberryperl 点击下载

Strawberry Perl是Windows环境的Perl环境,包含了运行和开发Perl应用程序所需的全部内容,它的目的是尽可能接近UNIX系统上的Perl环境,后面在编译nginx及其依赖库的时候需要用到。

选择安装路径时最好选择在没有空格和中文目录的路径下,安装完成后,默认会自动把安装目录加入到windows的PATH环境变量。

4.安装nasm 点击下载

NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性,安装这货主要是用来替换vs2010的汇编器,安装完成后,将其安装路径加入到PATH环境变量,默认安装路径为C:\Users\<用户>\AppData\Local\bin\NASM,实际路径根据你安装情况修改.

5.安装sed 点击下载

从sourceforge上下载sed并安装,安装完成后把bin目录路径添加到PATH环境变量中,默认安装目录为C:\Program Files (x86)\GnuWin32\bin

注:上面组件都安装完成后系统的PATH变量应该已添加下面这些项,如果缺少请自行添加:

6.下载nginx及相关依赖的源码包

搭建nginx-rtmp服务器需要下载nginx源码和nginx-rtmp-module源码,以及nginx依赖的组件及后面将要在msys终端下进行配置。

  • 下载nginx源码

打开cmd命令窗口,cd到C:\MinGW\msys\1.0\home\<用户>目录下,然后把nginx源码clone下来:

hg clone http://hg.nginx.org/nginx

  • 下载nginx-rtmp-module源码

作为nginx外接的扩展模块,将用作后面搭建RTMP直播环境的一部分,点击下载 nginx-rtmp-module源码并解压

  • 下载PCRE, zlib and OpenSSL 三个依赖包源码,版本最好与下面保持一致。

pcre-8.44.tar.gz

zlib-1.2.11.tar.gz

openssl-1.1.1g.tar.gz

在上面的nginx源码文件夹下创建objs/lib文件夹,然后解压上面3个依赖包到objs/lib文件夹中,再把上面解压的nginx-rtmp-module也复制到objs/lib文件夹中,如图:

配置及编译nginx + nginx-rtmp-model

1.在配置及编译之前我们要先填两个坑

坑1: 用编辑器打开nginx源码目录\auto\cc\msvc文件,在 echo " + cl version: $NGX_MSVC_VER" 的前面加入一行 NGX_MSVC_VER=19.00,该行不修改也不会影响后续的编译。 

坑2:  打开文件 nginx源码目录\auto\lib\openssl\makefile.msvc,将其中的 ms\do_ms  修改为  ms\do_nasm 

2.创建nginx配置脚本

2.1在nginx源码目录下新建一脚本文件configure.sh,内容如下:

auto/configure \
    --prefix= \
    --with-cc=cl \
    --with-debug \
    --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/pcre-8.44" \
    --with-zlib="objs/lib/zlib-1.2.11" \
    --with-openssl="objs/lib/openssl-1.1.1g" \
    --with-openssl-opt=no-asm \
    --with-http_ssl_module \
    --add-module="objs/lib/nginx-rtmp-module-master"

2.2 执行C:\MinGW\msys\1.0\msys.bat打开模拟终端并cd到nginx源码目录如下:

执行该目录中的configure.sh脚本,

./configure.sh

正常脚本运行完如下图:

2.3 继续填坑,用编辑器打开objs目录下的Makefile,删除CFLAGS这行中的 “-WX”参数,删除该参数的目的是避免编译器在编译过程中把警告当成错误而导致编译过程中止,如图:

3.编译

在开始菜单中找到visual studio 2010命令行窗口并打开,这是vs的命令行编译环境

命令行窗口,然后cd到nginx源码目录并执行nmake命令进行编译

cd C:\MinGW\msys\1.0\home\<用户>\nginx

nmake

最终编译完成后如图所示:

编译完成后在nginx源码目录的objs目录中会有nginx.exe文件,这就是最终生成的可执行文件。

创建运行基础文件夹

在磁盘中任一地方创建一个nginx文件夹,将nginx源码目录下的以下目录拷贝到当前目录:

源码目录下的conf, 源码目录下docs文件夹中的html目录,并手动新建logs和temp两个目录,再拷贝objs目录下的nginx.exe到当前目录,形成最终的目录结构如图:

修改conf/nginx.conf文件,在文件末尾添加如下内容:

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application live {
             live on;
             allow play all;
        }
    }
}

启动nginx,基础的RTMP流媒体服务搭建完成

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

打开浏览器,在地址栏中输入 http://localhost显示如下页面说明启动成功:

停止nginx:

nginx -s stop

 

使用FFMpeg进行推流和拉流

要使用ffmpeg进行推流和拉流需要编译在windows下可以运行的ffmpeg程序,请参考我的另一篇博客《Windows 10下基于MinGW编译FFMpeg with x264》进行编译。

FFMpeg推流:

ffmpeg -re -i "你的视频文件"  -f flv rtmp://localhost/live/test

FFMpeg拉流

ffplay rtmp://localhost/live/test

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值