1 概述

rtmp流媒体服务器,开源方案有多种,包括srs,red5,crtmpserver,fms,nginx插件等。本文描述了基于nginx插件的方式来实现rtmp流媒体服务器nginx-rtmp,该插件可以基于开源的nginx-rtmp-module。

本文是基于windows 10 x64操作系统下编译出32位的nginx-rtmp,即相关编译环境是32位的。

相关开源项目如下:

nginx(https://github.com/nginx/nginx

nginx-rtmp-module(https://github.com/arut/nginx-rtmp-module

2 准备

介绍编译所需要的第三方工具、第三方库、源码库、IDE。

2.1 第三方工具

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

windows下编译基于nginx插件的rtmp流媒体服务nginx-rtmp的更多相关文章

  1. windows下编译调试nginx

    typora-copy-images-to: image windows下编译调试nginx linux使用gdb跟踪代码效率不高,在通过跟踪代码进行源码分析,与定位复杂逻辑问题时,如果有一个简单易用 ...

  2. windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境

    windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境   http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...

  3. osg for android学习之一:windows下编译(亲测通过)【转】

    1. 首先需要一个OSG for android的环境 (1)NDK 现在Eclipse 对NDK已经相当友好了,已经不需要另外cygwin的参与,具体可以参考 Android NDK开发篇(一):新 ...

  4. [分享]windows下编译squid的经验(转)

    squid是什么我这里就不说了,这不是本文的重点,总之它是一个集:代理.加速.缓存.负载均衡.防盗链.访问控制等多功能的一个超牛X开源软件,如今已经广泛应用于很多领域.对于缓存和加速这一领域,如今各大 ...

  5. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  6. windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点(转)

    windows下使用火狐浏览器插件AutoProxy+MyEnTunnel+SSH访问海外站点   平时需要查阅一些技术资料,光走VPN太浪费流量,所以这儿教大家一种使用火狐浏览器的插件 AutoPr ...

  7. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  8. 在windows下用eclipse + pydev插件来配置python的开发环境

    在windows下用eclipse + pydev插件来配置python的开发环境 一.安装 python 可以到网上下个Windows版的python,官网为:https://www.python. ...

  9. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

随机推荐

  1. win10安装ubuntu子系统配置

    # 更改apt源 cat > /etc/apt/sources.list <<'END' #阿里云 deb http://mirrors.aliyun.com/ubuntu/ tru ...

  2. vue项目页面空白

    vue项目页面空白 今天新建项目,然后发现路由也改了 app.vue里面也是啥都没有, 但是访问http://localhost:8080/#/login 能访问 里面确实空白的 错误: 错误原因: ...

  3. layui 时间插件laydate ,取消回调

    背景:转型新公司不再是做前端展示H5之类的东西,主要业务是后台数据读取和插件搭建前端页面,接触的第一个老项目是layui制作的,由于业务需求,需要用到时间插件以下为时间插件的一些用法--------- ...

  4. Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, & Caffe

    https://imaginghub.com/blog/10-a-comparison-of-four-deep-learning-frameworks-tensorflow-cntk-mxnet-a ...

  5. openerp学习笔记 domain 的应用

    1.在Action中定义,domain用于对象默认的搜索条件: 示例: <record id="action_orders" model="ir.actions.a ...

  6. css3中比较少用到的属性记录

    letter-spacing 属性 支持:所有浏览器都支持 letter-spacing 属性. letter-spacing 属性增加或减少字符间的空白(字符间距). 该属性定义了在文本字符框之间插 ...

  7. 在C代码中将结构体变量作为参数传递效率忒低

    在C语言编程中,我们几乎不可能看见有人将一个结构体变量作为参数进行传递,因为效率太低了.本文尝试从反汇编的角度给出其中的缘由. 对于C语言来说,所有的参数传递都是值传递.如果一个变量为指针,那么传递的 ...

  8. Bootstrap使用模态框modal实现表单提交弹出框

    Bootstrap 模态框(Modal)插件 模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等.如果 ...

  9. 常用vue请求交互数据方式

    几种 vue的数据交互形式 var that=this get请求 that.$http.get("1.txt").then(function(result){ console.l ...

  10. java--多线程之后台线程

    public class ThreadDaemon { /** * @param args * 后台线程在主进程结束后,也会退出 */ public static void main(String[] ...