,首先下载安装nginx需要依赖的库文件:

1.1,选定源码目录

选定目录 /usr/local/RTMP

cd /usr/local/RTMP

1.2,安装PCRE库

cd /usr/local/RTMP

www.pcre.org 下载pcre-8.37.tar.gz , 然后拷贝到/usr/local/HLS

tar -zxvf pcre-8.37.tar.gz

cd pcre-8.37

./configure

make

make install

1.3,安装zlib库

cd /usr/local/RTMP

www.zlib.net 下载zlib-1.2.8.tar.gz, 然后拷贝到/usr/local/HLS

tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8

./configure

make

make install

1.4,安装SSL

cd /usr/local/RTMP

www.openssl.org下载openssl-1.0.2g.tar.gz, 然后拷贝到/usr/local/HLS

tar -zxvf openssl-1.0.2g.tar.gz

./config

make

make install

二,安装包含  nginx-rtmp-module模块的nginx

2.1,下载并解压nginx

nginx.org 下载稳定版本的nginx-1.8.1.tar.gz, 然后拷贝到/usr/local/RTMP

tar -zxvf nginx-1.8.1.tar.gz

2.2,下载 nginx-rtmp-module

到 https://github.com/arut/nginx-rtmp-module 下载:nginx-rtmp-module.1.1.4.tar.gz 然后拷贝到/usr/local/RTMP

tar -zxvf nginx-rtmp-module.1.1.4.tar.gz

2.3,编译安装包含  nginx-rtmp-module模块的nginx

2.3.1,进入nginx-1.8.1源码目录

依次执行以下命令运行:

./configure --prefix=/usr/local/nginx --add-module=/usr/local/RTMP/nginx-rtmp-module.1.1.4 --with-http_ssl_module

make -f objs/Makefile

make -f objs/Makefile install

三,配置点播RTMP

3.1,打开nginx/conf目录下的nginx.conf配置文件

3.1.1  在http{

    ……

    }  大括号里面的末尾添加以下配置内容:

  #配置rtmp状态页
  server {
  listen 8080;

  location /stat {
    rtmp_stat all;
    rtmp_stat_stylesheet stat.xsl;
    }

  location /stat.xsl {
    root /usr/local/rtmp/nginx-rtmp-module.1.1.4/; #在nginx-rtmp-module源码根目录
    }
  }

 3.1.2, 然后在nginx.conf的末尾加上以下内容:

  #rtmp点播配置
  rtmp {
    server {
    listen 1935;
    chunk_size 4000;
    application vod {
      play /usr/local/nginx/vod/flvs; #点播媒体文件存放目录
      }
    }
  }

3.1.3,保存以上配置信息。

3.2,配置点播环境信息

   3.2.1,建立媒体文件夹

    mkdir  /usr/local/nginx/vod/flvs

    3.2.2, 准备媒体文件

    把媒体文件(如oooo.flv)拷贝到 /usr/local/nginx/vod/flvs目录下

   3.2.3, 准备网页

    下载jwplayer: www.jwplayer.com  需要注册,才能下载并获取相应的license                              key(如:601u+htlhuXp5LQPeZtRlAABKwyX/94L3LRAcg==)

下载jwplayer7.3.6.zip后, 解压到:/usr/local/nginx/html/

建立测试网页test.html,也放到上面的目录下:

<html>
<head>
welcome test rtmp <br>
<script src="/jwplayer/jwplayer.js"></script>
</head>
<body>
<script type="text/javascript">
jwplayer.key="601u+htlhuXp5LQPeZtRlAABKwyX/94L3LRAcg==";
</script>
<div id='my-video'></div>
<script type='text/javascript'>
jwplayer('my-video').setup({
file:'rtmp://192.168.1.104/vod/oooo.flv',
width:'50%',
aspectratio:'3:2',
fallback:'false',
primary:'flash'
});
</script>
<script type="text/javascript">
jwplayer.key="601u+htlhuXp5LQPeZtRlAABKwyX/94L3LRAcg==";
</script>
</body>
</html>

  

3.3,启动nginx

3.3.1 执行  /usr/local/nginx/sbin/nginx

3.3.2,从客户端网页输入 http://192.168.1.104:8080/stat   得到如图结果:

3.3.3,从客户端网页输入:http://192.168.1.104/test.html  得到如下如图结果:

四,配置直播RTMP

4.1,打开nginx/conf目录下的nginx.conf配置文件

4.1.1 在配置文件里面加入如下配置信息:

#rtmp直播配置

  rtmp {

   server {

   listen 1935;

   chunk_size 4000;

  application  live {

  live on;

    }

  }

  }

4.1.2,如3.1.1相同加入rtmp的状态配置信息

  #配置rtmp状态页
  server {
      listen 8080;

      location /stat {
          rtmp_stat all;
          rtmp_stat_stylesheet stat.xsl;
        }

      location /stat.xsl {
        root /usr/local/hls/nginx-rtmp-module-master/; #在nginx-rtmp-module源码根目录
        }
    }

4.1.3,保存配置信息。

4.2配置资源信息

    

4.2.1, 准备网页

    下载jwplayer: www.jwplayer.com  需要注册,才能下载并获取相应的license                                key(如:601u+htlhuXp5LQPeZtRlAABKwyX/94L3LRAcg==)

下载jwplayer7.3.6.zip后, 解压到:/usr/local/nginx/html/

建立测试网页test.html,也放到上面的目录下:

<html>
<head>
welcom to test rtml <br>
<script src="/jwplayer/jwplayer.js"></script>
</head>
<body>
<script type="text/javascript">
jwplayer.key="601u+htlhuXp5LQPeZtRlAABKwyX/94L3LRAcg==";
</script>
<div id='my-video'></div>
<script type='text/javascript'>
jwplayer('my-video').setup({
file:'rtmp://192.168.0.128/live/test', #live是applicatioin,test是直播缓存流文件
width:'50%',
aspectratio:'3:2',
fallback:'false',
primary:'flash'
});
</script>
<script type="text/javascript">
jwplayer.key="601u+htlhuXp5LQPeZtRlAABKwyX/94L3LRAcg==";
</script>
</body>
</html>

4.3,启动nginx, 如3.3中的启动

  4.4,模拟推流

安装ffmpeg    ,请参考网上其他网文,在linux系统上安装ffmpeg。

用ffmpeg模拟产生一个直播源,向配置的rtmp服务器推送

ffmpeg –i /usr/local/nginx/vod/flvs/oooo.flv -strict -2 -c:v libx264 -c:a aac -f flv rtmp://192.168.1.104/live/test

注意:源文件必须是H.264+AAC的编码格式

其中,live是application; test是直播缓存流文件,需要与配置文件中的直播缓存文件名一致。(关于rtmp的URL格式请自行查阅相关资料)

4.5,从客户端网页输入:http://192.168.1.104/test.html  得到类似3.3的效果图:

基于nginx的rtmp的服务器(nginx-rtmp-module)的更多相关文章

  1. Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流

    Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流学习笔记 所需条件: nginx-rtmp-module(带rtmp模块) ,链接:https://link.jiansh ...

  2. session服务器Nginx+Tomcat+Memcached集群Session共享

    cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jor ...

  3. web服务器nginx和apache的对比分析

         今天准备较详细的对比一下apache httpd与nginx两个web服务器的异同点.优缺点.由于我并不是做web开发的,所以有什么理解错误还请指出,想要了解它们是因为工作中有时候会用到它, ...

  4. EasyDSS RTMP流媒体服务器是怎样炼成的:Easy而且更加互联网!

    开发EasyDSS的初衷 自从12年开始做EasyDarwin的时候,当时眼光一直都仅仅局限在安防监控视频这一块,对RTMP没有太大的重视,对于后起之秀HLS更是没有太多关注,然而经历了15直播火热的 ...

  5. EasyDSS RTMP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值

    之前接触最多的都是EasyNVR,主要针对的都是前端的一些问题.也有接触到一些easydss流媒体服务器. 前端方面的,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是 ...

  6. 编译EasyDSS rtmp流媒体服务器遇到stray '_239' inprogram,stray '_187' inprogram,stray '_191' inprogram的解决办法

    使用用户提供的交叉编译工具链编译easydss时遇到一个编译错误 stray '\239' inprogram stray '\187' inprogram stray '\191' inprogra ...

  7. EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法

    EasyDSS支持HTTP GET接口访问,我们需要获取url的各种参数信息 比如http://ip:port/action?a=1&b=2&c=3 我们需要知道对应的a.b.c的值 ...

  8. 基于nginx的rtmp直播服务器(nginx-rtmp-module实现)

    首先,在搭建服务之前先了解下目前主流的几个直播协议: 1.RTMP: 实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播 ...

  9. iOS 直播推流 - 搭建基于RTMP的本地Nginx服务器

    前端时间,公司要调研直播相关的内容,特地花时间进行了一番调研. 本篇将记录其中的推流篇-本地推理播放测试. 关于Nginx: 配置Nginx以支持HLS.RTMP的推流与拉流,iOS系统使用LFLiv ...

随机推荐

  1. edit编辑框相关

    从Edit Control获取值,然后通过MessageBox输出出来 void CNowaMagic_MFCDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代 ...

  2. python list内容拷贝方法

    先看如下代码: x = ['a','b','z'] y = x print y y[0] = 'w' print x,y 结果输出: >>> ['a', 'b', 'z'] #y l ...

  3. (转载)C# 编程 使用可空类型

    转载出处为://https://msdn.microsoft.com/zh-cn/library/2cf62fcy(vs.90).aspx#Anchor_1 C#可以为 null 的类型可以表示基础类 ...

  4. 类和对象:面向对象编程 - 零基础入门学习Python037

    类和对象:面向对象编程 让编程改变世界 Change the world by program 经过上节课的热身,相信大家对类和对象已经有了初步的认识,但似乎还是懵懵懂懂:好像面向对象编程很厉害,但不 ...

  5. linux内核学习之四:进程切换简述

    在讲述专业知识前,先讲讲我学习linux内核使用的入门书籍:<深入理解linux内核>第三版(英文原版叫<Understanding the Linux Kernel>),不过 ...

  6. 字符串时间日期转为Date格式和long格式

    public static Long compare_date(String DATE1, String DATE2) { DateFormat df = new SimpleDateFormat(& ...

  7. QT creator中使用opencv采集摄像头信息

    之前在QT creator上成功编译了opencv,由于课题需要,需要采集摄像头的信息.故搜集了网上的一些资料,依葫芦画瓢的照着做了一下,终于简单的成功采集了信息. 打开QTcreator,新建一个w ...

  8. directive 指令

    参考文章 : http://www.zouyesheng.com/angular.html#toc20    18. 自定义指令directive http://blog.jobbole.com/62 ...

  9. JavaScript中String对象处理HTML标记中文本的方法

    big():创建一个<big></big>标记,将这个字符串的字体变大blink():创建一个<blink></blink>标记,使字符串具有闪烁效果b ...

  10. Qt跨线程信号和槽的连接(默认方式是直连和队列的折中)

    Qt支持三种类型的信号-槽连接:1,直接连接,当signal发射时,slot立即调用.此slot在发射signal的那个线程中被执行(不一定是接收对象生存的那个线程)2,队列连接,当控制权回到对象属于 ...