精华内容
下载资源
问答
  • windows下编译安装nginx_rtmp

    千次阅读 2019-06-21 15:20:50
    windows下搭建nginx-rtmp服务器 文章目录windows下搭建nginx-rtmp服务器编译nginxnginx-rtmp环境搭建效果测试最后说明 最近因为接...

    windows下搭建nginx-rtmp服务器



    这是编译好的下载地址,可自行下载 https://download.csdn.net/download/zqw_4181/11049655

    最近因为接触直播相关的技术工作,使用的也是基于高并发和高性能的nginx,首先需要做的当然是搭建一个nginx服务器。

    对于linux上nginx服务器的搭建此处就不再赘述,按照操作指引来的话一般都能顺理成章搭建起来。

    对于linux操作不熟练的手残党来说,当然是希望能在windows下也能用上这一套。刚开始在windows下搭建环境的时候遇到了很多问题,后面逐个解决花费不少功夫,怕以后忘了,就把我在windows下编译nginx和搭建RTMP直播服务器的过程记录下来,权当做个备忘。


    ##准备工作

    • ###安装MinGW###
      在这些准备工作之前,你的电脑上至少安装有一款IDE,我的是VS2008。
      首先安装MinGW,后面的nginx编译需要先在msys环境下进行。
      安装方式可以有在线安装和离线安装两种方式,离线安装的话过程很繁琐,需要自己下载各种包解压、配置路径等等操作,所以此处采用无脑式的在线安装进行说明。

      由于MinGW的很多资源包都是在sourceforge上下载的,国内虽然能访问,但是速度奇慢,在线安装过程中经常会出现下载组件失败,强烈建议翻墙安装。
    1. MinGW找到MinGW安装引导程序mingw-get-setup.exe的链接地址并下载,下载的文件不到100KB。执行安装工具,开始选择安装路径时要注意,不要将MinGW安装到带有空格或者中文路径的目录下!!
      MinGW安装器

    2. 默认情况下,在下载完成后会在桌面生成一个MinGW Installer快捷图标,如果没有,也可以去MinGW安装目录中找到, $MinGW安装目录\libexec\mingw-get\guimain.exe。接下来运行安装之后的快捷图标,选择要在线安装的组件,此处只需选择Basic Setup下msys及gcc相关组件就行了。
      然后,选择Installation菜单中Apply Changes进行在线下载和安装,整个过程可能会持续十几分钟。
      当然后续有需要可以再利用这个安装界面进行组件的更改或者删除
      安装勾选项
      如果安装过程中出现组件下载失败的情况,直接确定继续往下,安装程序会在所有的依赖包下载完成之后进行解压安装,执行完成后,在不关闭安装界面的前提下,回到上面的第二个步骤再来一遍,一直到没有安装错误。

    3. 至此,MinGW的成功安装后,勾选的项目会变成浅绿色填充。
      MinGW安装完成
      MinGW的安装目录下也会有msys的目录,进入该目录里面,会看到有个批处理文件 msys.bat,可以把它创建到桌面作为快捷方式,双击进去就进入msys环境了。使用上和linux终端类似,不过是个精简版的,命令没有linux下的全,可以使用mingw-get命令进行在线安装某些包,比如,要安装gdb,直接输入命令 mingw-get install gdb
      mingw在线安装附加包
      MinGW正常安装的话,一般会自动将路径加入到环境变量。如果在使用中出现问题,检查下是不是因为路径设置的原因,手动将 $MinGW安装目录\bin$MinGW安装目录\msys\1.0\bin 加入到windows的PATH环境变量。

    • ###安装Mercurial###
      Mercurial是一个版本管理工具,后面我们需要用它下载windows下的nginx源码。
    1. Mercurial下载windows版并安装。
      下载Mercurial

    2. 安装时最好将安装目录选择在没有空格和中文目录的路径下。安装完成后,在cmd中执行命令 hg,如果有以下显示则表示安装成功了。
      安装Mercurial

    • ###安装strawberryperl###
      Strawberry Perl是Windows环境的Perl环境,包含了运行和开发Perl应用程序所需的全部内容,它的目的是尽可能接近UNIX系统上的Perl环境,后面在编译nginx及其依赖库的时候需要用到。
    1. Strawberry Perl下载并安装windows下的安装程序,选择安装路径时最好选择在没有空格和中文目录的路径下。
    • ###安装nasm###
      NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性,至于为什么要安装这货,后面再说。
    1. NASM下载安装程序安装即可。
    2. 安装完成后,将其安装路径加入到PATH环境变量。
    • ###下载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

    以下是我使用的几个源码包的版本:
    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

    1. 将上述下载好的五个源码包拷贝到msys目录下 $MinGW安装目录\msys\1.0\home\$USERNAME\

    2. 打开msys批处理文件,分别解压之前下载的源码包。

    3. 进入nginx源码目录。新建一个configuration-nginx.bat文件,里面内容如下,后面的将几个依赖包加入的配置代码根据实际情况填写不同路径。

      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

    4. 此时执行该批处理文件,稍稍等待几秒钟,会出现nginx配置完成的信息。
      nginx编译-1
      这里会发现有一个异样的提示,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"
      nginx编译-1.1
      到这里为止,msys的使命就完成了。

    5. 打开Visual Studio 2008 命令提示,在命令提示符中进入到nginx源码目录,执行命令 nmake /f objs\MakeFile ,会发现编译报错。
      nginx编译-2
      此时,之前安装的NASM就该登场了。
      打开文件 $nginx源码目录\auto\lib\openssl\makefile.msvc,将其中的
      ms\do_ms
      修改为
      ms\do_nasm
      然后,删除openssl源码目录中的out32和tmp32两个临时目录,重新启动Visual Studio 2008 命令提示,再次执行前面的第五步就可以了

    6. 成功编译之后,最终会有以下打印信息,并且在nginx源码目录的objs目录中可以看到最终生成的nginx.exe文件。
      nginx编译-3

    nginx-rtmp环境搭建

    1. 可以在msys的根目录 / 下新建一个nginx目录,然后将生成的nginx.exe,nginx源码目录下的conf目录以及docs目录下的html目录都拷贝到当前目录,并手动新建logs和temp两个目录,形成最终的目录结构。
      nginx环境目录结构

    2. 随后修改conf/nginx.conf,关于如何配置和修改不在本文范畴内,so,略过~。
      在当前nginx目录中,启动windows命令行,运行 start /b nginx.exe -c conf\nginx.conf 这样nginx服务就在后台启动了。在浏览器中输入地址进入到nginx服务的主页,如果可以看到如下内容,说明整个环境已经OK,接下来可以使用推流和拉流看看实际效果了。最后使用命令 nginx.exe -s stop 优雅地终止nginx服务。
      nginx环境OK

    效果测试

    接下来的效果测试,对环境稍微做了一点点改动,使用nginx-rtmp-module中提供的JWPlayer的Play页面进行拉流或者Record页面进行推流。

    1. 首先是在nginx/html/目录下新建一个文件夹 nginx-rtmp-module,将之前解压的nginx-rtmp-module-1.1.11目录下的stat.xsl文件以及test文件夹拷贝到新建的目录nginx-rtmp-module下。

    2. 修改nginx/html/nginx-rtmp-module/test/nginx.conf文件,关闭nginx的守护和master-worker模式,由于本机有SVN占据了80端口,所以修改http的服务端口为8080,同时将nginx服务的访问目录修改为刚才nginx-rtmp-module中指向的index文件。再加入RTMP模块的配置,最终的配置文件内容如下:

       worker_processes  1;
       daemon off;
       master_process off;
      

    error_log logs/error.log info;

    events {
    worker_connections 1024;
    }

    rtmp {
    server {
    listen 1935;

         application live {
             live on;
         }
     }
    

    }

    http {
    server {
    listen 8080;

         location /stat {
             rtmp_stat all;
             rtmp_stat_stylesheet stat.xsl;
         }
    
         location /stat.xsl {
             root html/nginx-rtmp-module/;
         }
    
         location /control {
             rtmp_control all;
         }
    
         location /rtmp-publisher {
             root html/nginx-rtmp-module/test;
         }
    
         location / {
             root html/nginx-rtmp-module/test/www;
         }
     }
    

    }

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
  • 配置拉流名字,修改nginx/html/nginx-rtmp-module/test/www/index.html文件,将
    file: "rtmp://localhost/myapp?carg=1/mystream?sarg=2" 修改为
    file: "rtmp://localhost/live?carg=1/test?sarg=2" 以保持和上面的配置文件一致。

  • 配置推流名称,修改nginx/html/nginx-rtmp-module/test/www/record.html文件,将开始的
    'streamer': 'rtmp://localhost/myapp', 修改为
    'streamer': 'rtmp://localhost/live' 以保持和上面的配置文件一致。

  • 在msys下进入nginx目录,执行 nginx.exe -c html/nginx-rtmp-module/test/nginx.conf & nginx服务会在后台运行。
    nginx服务后台运行

  • 推流,推流的手段有很多,此处使用ffmpeg将本地的文件流化并推到nginx服务。
    ffmpeg -re -i "F:\TDDownload\BBC记录片\BBC理查德哈蒙德:看不见的世界BD中字-cd1.mkv" -vcodec copy -f flv rtmp://192.168.100.2/live/test
    推流

  • 拉流,拉流方式也很多,浏览器中打开nginx服务的主页面192.168.100.2:8080,可以看到出现的视频播放窗口,点击Play即可拉流,此时的流地址就是上面配置好的rtmp://192.168.100.2/live/test ,也可在SRS播放器页面
    输入流地址rtmp://192.168.100.2/live/test 拉流,还可利用 ffplay rtmp://192.168.100.2/live/test 拉流。
    拉流

  • 打开nginx服务的统计页面192.168.100.2:8080/stat也可以看到当前的服务运行状态。
    nginx服务运行状态

  • 使用JWPlayer的Record页面采集摄像头和麦的数据推流到nginx服务,在SRS播放器页面拉流,由于前面配置的Record页面推流的名字是mystream,所以此处输入 rtmp://192.168.100.2/live/mystream
    采集摄像头推流
    nginx服务运行状态2

  • 最后说明

    本来还试着在移动端试试播放效果,不过JWPlayer貌似是不支持直接在html页面进行rtmp直播,不过可以下载一个app(易推流)进行rtmp的直播测试。

    有关nginx-rtmp服务器的搭建过程到此就算全部完成了,在此过程中当然也不全是靠我自己的摸索,也参考了前辈或同行的经验,在此感谢那些曾经的贡献者,参考资料如下:

    http://blog.csdn.net/felixking/article/details/51981794
    http://nginx.org/en/docs/howto_build_on_win32.html

          </div>
          <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                  </div>
    
    展开全文
  • windows下搭建nginx-rtmp服务器

    万次阅读 2017-07-01 19:59:53
    windows下搭建nginx-rtmp服务器windows下搭建nginx-rtmp服务器 准备工作 安装MinGW 安装Mercurial 安装strawberryperl 安装nasm 下载nginx相关的源码包 编译nginx nginx-rtmp环境搭建 效果测试 最后说明

    windows下搭建nginx-rtmp服务器



    最近因为接触直播相关的技术工作,使用的也是基于高并发和高性能的nginx,首先需要做的当然是搭建一个nginx服务器。
    对于linux上nginx服务器的搭建此处就不再赘述,按照操作指引来的话一般都能顺理成章搭建起来。
    对于linux操作不熟练的手残党来说,当然是希望能在windows下也能用上这一套。刚开始在windows下搭建环境的时候遇到了很多问题,后面逐个解决花费不少功夫,怕以后忘了,就把我在windows下编译nginx和搭建RTMP直播服务器的过程记录下来,权当做个备忘。


    ##准备工作

    • ###安装MinGW###
      在这些准备工作之前,你的电脑上至少安装有一款IDE,我的是VS2008。
      首先安装MinGW,后面的nginx编译需要先在msys环境下进行。
      安装方式可以有在线安装和离线安装两种方式,离线安装的话过程很繁琐,需要自己下载各种包解压、配置路径等等操作,所以此处采用无脑式的在线安装进行说明。

      由于MinGW的很多资源包都是在sourceforge上下载的,国内虽然能访问,但是速度奇慢,在线安装过程中经常会出现下载组件失败,强烈建议翻墙安装。
    1. MinGW找到MinGW安装引导程序mingw-get-setup.exe的链接地址并下载,下载的文件不到100KB。执行安装工具,开始选择安装路径时要注意,不要将MinGW安装到带有空格或者中文路径的目录下!!
      MinGW安装器

    2. 默认情况下,在下载完成后会在桌面生成一个MinGW Installer快捷图标,如果没有,也可以去MinGW安装目录中找到, $MinGW安装目录\libexec\mingw-get\guimain.exe。接下来运行安装之后的快捷图标,选择要在线安装的组件,此处只需选择Basic Setup下msys及gcc相关组件就行了。
      然后,选择Installation菜单中Apply Changes进行在线下载和安装,整个过程可能会持续十几分钟。
      当然后续有需要可以再利用这个安装界面进行组件的更改或者删除
      安装勾选项
      如果安装过程中出现组件下载失败的情况,直接确定继续往下,安装程序会在所有的依赖包下载完成之后进行解压安装,执行完成后,在不关闭安装界面的前提下,回到上面的第二个步骤再来一遍,一直到没有安装错误。

    3. 至此,MinGW的成功安装后,勾选的项目会变成浅绿色填充。
      MinGW安装完成
      MinGW的安装目录下也会有msys的目录,进入该目录里面,会看到有个批处理文件 msys.bat,可以把它创建到桌面作为快捷方式,双击进去就进入msys环境了。使用上和linux终端类似,不过是个精简版的,命令没有linux下的全,可以使用mingw-get命令进行在线安装某些包,比如,要安装gdb,直接输入命令 mingw-get install gdb
      mingw在线安装附加包
      MinGW正常安装的话,一般会自动将路径加入到环境变量。如果在使用中出现问题,检查下是不是因为路径设置的原因,手动将 $MinGW安装目录\bin$MinGW安装目录\msys\1.0\bin 加入到windows的PATH环境变量。

    • ###安装Mercurial###
      Mercurial是一个版本管理工具,后面我们需要用它下载windows下的nginx源码。
    1. Mercurial下载windows版并安装。
      下载Mercurial

    2. 安装时最好将安装目录选择在没有空格和中文目录的路径下。安装完成后,在cmd中执行命令 hg,如果有以下显示则表示安装成功了。
      安装Mercurial

    • ###安装strawberryperl###
      Strawberry Perl是Windows环境的Perl环境,包含了运行和开发Perl应用程序所需的全部内容,它的目的是尽可能接近UNIX系统上的Perl环境,后面在编译nginx及其依赖库的时候需要用到。
    1. Strawberry Perl下载并安装windows下的安装程序,选择安装路径时最好选择在没有空格和中文目录的路径下。
    • ###安装nasm###
      NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性,至于为什么要安装这货,后面再说。
    1. NASM下载安装程序安装即可。
    2. 安装完成后,将其安装路径加入到PATH环境变量。
    • ###下载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

    以下是我使用的几个源码包的版本:
    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

    1. 将上述下载好的五个源码包拷贝到msys目录下 $MinGW安装目录\msys\1.0\home\$USERNAME\

    2. 打开msys批处理文件,分别解压之前下载的源码包。

    3. 进入nginx源码目录。新建一个configuration-nginx.bat文件,里面内容如下,后面的将几个依赖包加入的配置代码根据实际情况填写不同路径。

      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

    4. 此时执行该批处理文件,稍稍等待几秒钟,会出现nginx配置完成的信息。
      nginx编译-1
      这里会发现有一个异样的提示,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"
      nginx编译-1.1
      到这里为止,msys的使命就完成了。

    5. 打开Visual Studio 2008 命令提示,在命令提示符中进入到nginx源码目录,执行命令 nmake /f objs\MakeFile ,会发现编译报错。
      nginx编译-2
      此时,之前安装的NASM就该登场了。
      打开文件 $nginx源码目录\auto\lib\openssl\makefile.msvc,将其中的
      ms\do_ms
      修改为
      ms\do_nasm
      然后,删除openssl源码目录中的out32和tmp32两个临时目录,重新启动Visual Studio 2008 命令提示,再次执行前面的第五步就可以了

    6. 成功编译之后,最终会有以下打印信息,并且在nginx源码目录的objs目录中可以看到最终生成的nginx.exe文件。
      nginx编译-3

    nginx-rtmp环境搭建

    1. 可以在msys的根目录 / 下新建一个nginx目录,然后将生成的nginx.exe,nginx源码目录下的conf目录以及docs目录下的html目录都拷贝到当前目录,并手动新建logs和temp两个目录,形成最终的目录结构。
      nginx环境目录结构

    2. 随后修改conf/nginx.conf,关于如何配置和修改不在本文范畴内,so,略过~。
      在当前nginx目录中,启动windows命令行,运行 start /b nginx.exe -c conf\nginx.conf 这样nginx服务就在后台启动了。在浏览器中输入地址进入到nginx服务的主页,如果可以看到如下内容,说明整个环境已经OK,接下来可以使用推流和拉流看看实际效果了。最后使用命令 nginx.exe -s stop 优雅地终止nginx服务。
      nginx环境OK

    效果测试

    接下来的效果测试,对环境稍微做了一点点改动,使用nginx-rtmp-module中提供的JWPlayer的Play页面进行拉流或者Record页面进行推流。

    1. 首先是在nginx/html/目录下新建一个文件夹 nginx-rtmp-module,将之前解压的nginx-rtmp-module-1.1.11目录下的stat.xsl文件以及test文件夹拷贝到新建的目录nginx-rtmp-module下。

    2. 修改nginx/html/nginx-rtmp-module/test/nginx.conf文件,关闭nginx的守护和master-worker模式,由于本机有SVN占据了80端口,所以修改http的服务端口为8080,同时将nginx服务的访问目录修改为刚才nginx-rtmp-module中指向的index文件。再加入RTMP模块的配置,最终的配置文件内容如下:

       worker_processes  1;
       daemon off;
       master_process off;
       
       error_log  logs/error.log info;
       
       events {
           worker_connections  1024;
       }
       
       rtmp {
           server {
               listen 1935;
       
               application live {
                   live on;
               }
           }
       }
       
       http {
           server {
               listen      8080;
       
               location /stat {
                   rtmp_stat all;
                   rtmp_stat_stylesheet stat.xsl;
               }
       
               location /stat.xsl {
                   root html/nginx-rtmp-module/;
               }
       
               location /control {
                   rtmp_control all;
               }
       
               location /rtmp-publisher {
                   root html/nginx-rtmp-module/test;
               }
       
               location / {
                   root html/nginx-rtmp-module/test/www;
               }
           }
       }
      
    3. 配置拉流名字,修改nginx/html/nginx-rtmp-module/test/www/index.html文件,将
      file: "rtmp://localhost/myapp?carg=1/mystream?sarg=2" 修改为
      file: "rtmp://localhost/live?carg=1/test?sarg=2" 以保持和上面的配置文件一致。

    4. 配置推流名称,修改nginx/html/nginx-rtmp-module/test/www/record.html文件,将开始的
      'streamer': 'rtmp://localhost/myapp', 修改为
      'streamer': 'rtmp://localhost/live' 以保持和上面的配置文件一致。

    5. 在msys下进入nginx目录,执行 nginx.exe -c html/nginx-rtmp-module/test/nginx.conf & nginx服务会在后台运行。
      nginx服务后台运行

    6. 推流,推流的手段有很多,此处使用ffmpeg将本地的文件流化并推到nginx服务。
      ffmpeg -re -i "F:\TDDownload\BBC记录片\BBC理查德哈蒙德:看不见的世界BD中字-cd1.mkv" -vcodec copy -f flv rtmp://192.168.100.2/live/test
      推流

    7. 拉流,拉流方式也很多,浏览器中打开nginx服务的主页面192.168.100.2:8080,可以看到出现的视频播放窗口,点击Play即可拉流,此时的流地址就是上面配置好的rtmp://192.168.100.2/live/test ,也可在SRS播放器页面
      输入流地址rtmp://192.168.100.2/live/test 拉流,还可利用 ffplay rtmp://192.168.100.2/live/test 拉流。
      拉流

    8. 打开nginx服务的统计页面192.168.100.2:8080/stat也可以看到当前的服务运行状态。
      nginx服务运行状态

    9. 使用JWPlayer的Record页面采集摄像头和麦的数据推流到nginx服务,在SRS播放器页面拉流,由于前面配置的Record页面推流的名字是mystream,所以此处输入 rtmp://192.168.100.2/live/mystream
      采集摄像头推流
      nginx服务运行状态2

    最后说明

    本来还试着在移动端试试播放效果,不过JWPlayer貌似是不支持直接在html页面进行rtmp直播,不过可以下载一个app(易推流)进行rtmp的直播测试。

    有关nginx-rtmp服务器的搭建过程到此就算全部完成了,在此过程中当然也不全是靠我自己的摸索,也参考了前辈或同行的经验,在此感谢那些曾经的贡献者,参考资料如下:

    http://blog.csdn.net/felixking/article/details/51981794
    http://nginx.org/en/docs/howto_build_on_win32.html

    展开全文
  • http://nginx.org/en/docs/howto_build_on_win32.html ...Win10 操作系统,貌似在编译OpenSSL的时候有问题。 使用sm for Windows 作为微软的masm 的替代。   一:下载以下工具,并依次安装。...

    http://nginx.org/en/docs/howto_build_on_win32.html

    官网上的操作说明。

    官网的方法Nginx编译方法,思路是一致的,只是有几个细节地方需要调整。

    需要注意以下问题:

    1. Win10 操作系统下,貌似在编译OpenSSL的时候有问题。
    2. 使用sm for Windows 作为微软的masm 的替代。

     

    一:下载以下工具,并依次安装。

    1、  下载 VS2010 VS2010 SP1 (C++编译环境)VS2015也可以。

    2、  MSYS-1.0.11.exe

    3、  ActivePerl-5.24.2.2403-MSWin32-x64-403863.exe

    4、  mercurial-4.3.1-x64.msi

    5、  nasm-2.12.02rc9-installer-x64.exe

    6、  sed-4.2.1-setup.exe

    7、  下载配套的所需库代码PCREzlib and OpenSSL libraries sources.

    并且需要确保以上工具加入到了环境变量。

    二、获取Nginx源代码

             打开CMD命令,切换到Mercurial安装根目录,执行命令:

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

     

             下载成功后会在Mercurial安装目录下,创建nginx源代码文件夹。

     

     

     

    三、添加依赖资源包

             在nginx源代码分别创建objs\lib 文件夹,此处如此命名只是约定的习惯,可以不是这两个名称。并且将下载好的nginx-rtmp-module-master、openssl、pcre、zlib分别解压在lib文件夹下面。

             以上动作可以按官网教程一样,使用MSYS使用CUI的方式。

     

    结果如下图:

     

     

    四、生成makefile文件,用于C++编译器

             继续使用MSYS工具,返回到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 \

    --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.41 \

    --with-zlib=objs/lib/zlib-1.2.11 --with-openssl=objs/lib/openssl-1.0.2k \

    --with-select_module --with-http_ssl_module --add-module=objs/lib/nginx-rtmp-module

     

             有如上三部分输出

     

     

             最终结果,会在objs目录下生成Makefile文件,以及其他所依赖的代码。

    五、OpenSSL的坑,

           需要修改 nginx\auto\lib\openssl\makefile.msvc 文件。

          将ms\do_ms 改为ms\do_nasm。

    具体原因参看篇文章。

           http://blog.csdn.net/felixking/article/details/51981794?utm_source=itdadao&utm_medium=referral

     

     

     

    六、编译Nginx源码

             使用VS2010命令工具,切换到Nginx根目录,执行nmake  -f objs/Makefile  命令。

     

     

    【我一开始在Wi10上使用VS2015的开发者工具,结果依然有问题,具体原因没有分析出来,核心错误如下:

    perl util/copy.pl "inc32\openssl\*.[ch]" "D:\Program Files\Mercurial\nginx\objs\lib\openssl-1.0.2k\openssl\include\openssl"

    Destination must be a directory at util/copy.pl line 39.

    推测是Win10版本都有这个异常】

     

        最后改为Win7+VS2010。

    不算漫长的等待之后,激动人心的时刻就到来了。编译成功。

     

     

    七、创建运行基础文件夹

             在nginx.exe所在文件夹下创建创建conf,logs,temp,tmp目录,可将nginx-rtmp-module\test下的nginx.conf文件复制到conf目录下,启动nginx,基础的RTMP流媒体服务搭建完成。

     

     

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

    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

    展开全文
  • nginx-rtmp-module在linux(centos7)下的下载安装一、下载1、通过git命令进行下载2、通过下载压缩包到windows下通过SecureCRT上传至linux中,在通过解压缩,重命名为nginx-rtmp-module二、安装nginx以及nginx-rtmp-...
  • nginx+rtmp+livePush实现视频转流推流

    千次阅读 2018-06-24 16:59:36
    centos环境nginx(linux下部署)rtmp模块(linux下部署)livePush.war包(windows下部署)OBS(测试转流工具)VLC(测试拉流工具)-----------------------我的分割线--------------------先安装nginx+rtmp模块( nginx...
  • 最近要搭一个直播平台,需要在Linux和Windows下分别搭建服务器,用两篇博客记录一下搭建过程下载安装nginxnginx-rtmp-module的编译依赖工具sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-...
  • Windows下nginx-http-flv-module编译

    千次阅读 热门讨论 2020-03-25 15:26:45
    准备 nginx源码 工具集 1.mingw 2.perl,安装时添加到环境变量 3.nasm,安装完将nasm.exe所在的目录添加到环境...1.rtmp插件,nginx-rtmp-module或者nginx-http-flv-module(here use nginx-http-flv-module) 2...
  • 在博主之前的博文《Ubuntu...下面讲述在windows下搭建nginx流媒体服务器的方法,使其支持rtmp协议的直播以及通过配置支持直播状态监听。 一、nginx安装和配置 首先我们下载nginx。在nginx官网上下载的nginx是...
  • 需要使用到的技术:ffmpeg+nginx+vlc,rtsp协议、rtmp协议 1.首先下载ffmpeg软件,解压到C盘。注意一下C:\ffmpeg\bin路径 ...4.安装nginxnginx-rtmp-module 5.更改nginx.conf文件 6.启...
  • Windows下通过nginx将摄像头RTSP视频流转为RTMP格式 nginx-rtmp新建hls 整个服务部署文件构架如下 nginx-rtmpnginx.exe │ ├─conf │ fastcgi.conf │ fastcgi_params │ koi-utf │ koi-win │ mime.types ...
  • WIN10+VS2017环境编译nginx-1.12及rtmp module备忘

    千次阅读 热门讨论 2018-04-07 09:26:14
    本项目已开源,地址:https://github.com/Car-eye-team/Car-eye-RTMP-server/tree/master/source/nginx_windows昨天在Windows下编译了下nginx-1.12版本,过程比较蜿蜒,记录一下。首先说下必备的工具及代码:MSYS-...
  • 最近在测试ijk播放器的解码性能等功能,所以搭建了nginx模拟直播推流,在这里,主要讲解rtmp和hls推流方式的环境搭建。笔者采用的是Mac系统,不过Windows也大同小异,就不再单独篇幅进行介绍了。 一、安装...
  • &amp;amp;amp;amp;amp;amp;nbsp;&amp;...继上次制作了RTMP直播源之后,因为互联网更常用的是HLS源和HTTP-FLV,所以这次又...所需条件:(安装过程请看:https://blog.csdn.net/qq_40816360/article/details/839
  • 1:将安装包上传到linux中的/usr/local路径切换到/usr/local...unzip -zxvf nginx-rtmp-module-master.zip(这个命令可能无效,你也可以在windows先解压放到linux的/usr/local下面) tar -zxvf openssl-1.0.2k...
  • 网上关于直播相关的文章很多,但是讲解还是不够系统,对于刚刚接触直播开发的朋友实施起来会浪费不少时间...1.准备RTMP服务器,我是在win10开发,我是安装了docker for windows,然后下载镜像nginx-rtmp-server,(使
  • 在博主之前的博文《在windows下搭建、配置nginx流媒体服务器,并进行rtmp流的推流、拉流测试》中,讲述了搭建nginx流媒体服务器的方法。但是如果仅仅执行这些步骤,安装好的nginx是只能在局域网(内网)内访问的。...
  • 除了Windows/Android/iOS Native SDK,大牛直播SDK播放端还支持Unity3d(Windows/Android/iOS)二次封装,Unity3D为数不多真正功能强大的高稳定、超低延迟的RTMP/RTSP直播播放器,此外Windows平台RTMP推送端,也支持...
  • 所以最后采用转流的方式,部署nginx、ffmpeg将rtsp转为rtmp格式、利用video.js在web网页上进行视频播放,无需浏览器安装插件。这里延伸一点:HTML5的可以支持rtmp,但是无法播放rtsp,flash也止步于rtmp。 一、 前期...
  • 1,修改根目录运行时文件夹为777权限,Windows服务器忽略。 2,打开你的网址进行访问, 3,系统更新 即将更新解决了接口地址更改的问题,同时修改了部分问题。增加了rtmp直播源的播放方式。 1,删除数据
  • 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 ---------------------------------------------------     ---------------...
  • 1.Windows环境下安装FFmpeg 我上一篇博客有介绍安装 https://blog.csdn.net/qq_21434969/article/details/109379866 2.下载nginx集成rtmp模块的一般网上也有,这里我在网盘放可以自行下载 百度网盘地址:...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

windows下nginx安装rtmp