一 概要说明

使用nginx搭建流媒体直播平台,目的就是要支持rtmp协议,实现用户使用rtmp(rtmp://192.168.201.128/myapp)协议推送流到服务器。然后其他用户点播该用户推送的视频流信息。既然是rtmp协议,所以客户端可以是flash程序,也可以OBS(Open Broadcaster Software)这种比较大众化的直播客户端。个人是比较喜欢使用OBS的,老实说我其实也是flash和flex开发者,开发个多款WEB视频程序和视频会议系统。java水平也是很高的。欢迎打脸,我这种人就不怎么谦虚,因为我觉太谦虚就虚伪了.

再世面上有很多流媒体服务器。有商业的也有开源,比如常用FMS,Red5,wowza.crtmpserver,等,如果是做小型视频会议,我个人强烈推荐Red5。Red5有很开放的api,对于开发实时性要求比较高的很方便。开发工具和开发java的人上手也很快。

二 环境准备

1 准备一台linux的操作系统,我的Centos5。windows 再nignx上自己编译模块很麻烦的,所以我就在Centos上测试。我的系统信息如下:

Linux localhost 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 athlon i386 GNU/Linux

2 准备软件包

nginx-1.4.7.tar.gz

nginx-rtmp-module-1.1.7.tar.gz

三 开始安装

1 安装nginx所需要的依赖包。注意不同系统或者模块需要的依赖包是不一样的。我这里值安装最基本的就行了。

[root@localhost html]# yum install -y gcc gcc-c++
[root@localhost html]# yum install –y openssl-devel pcre-devel zlib-devel

注意:最好不要用默认的yum源。都统一换成阿里云的yum源。

2 先解压包,这不没什么难度吧。然后执行ningx配置文件。执行没问题后,执行编译,安装

[root@localhost local]# tar -zvxf nginx-1.4.7.tar.gz
[root@localhost local]# wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.7.tar.gz
[root@localhost local]# tar nginx-rtmp-module-1.1.7.tar.gz
[root@localhost local]# tar -zxvf nginx-rtmp-module-1.1.7.tar.gz
[root@localhost local]# cd /usr/local/nginx-1.4.7
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-rtmp-module-1.1.7
[root@localhost nginx-1.4.7]# make && make install

输出日志我就不贴出来了。编译完成后。就该修改nginx的配置文件,让nginx支持rtmp协议。

3 修改配置文件后内容如下(改配置文件可以参考):

[root@localhost test]# pwd
/usr/local/nginx-rtmp-module-1.1.7/test

[root@localhost test]# ll
total 56
-rwxrwxr-x 1 root root   49 Mar 24  2015 dump.sh
-rwxrwxr-x 1 root root   84 Mar 24  2015 ffstream.sh
-rw-rw-r-- 1 root root 1245 Mar 24  2015 nginx.conf
-rwxrwxr-x 1 root root   59 Mar 24  2015 play.sh
-rw-rw-r-- 1 root root  499 Mar 24  2015 README.md
drwxrwxr-x 2 root root 4096 Mar 24  2015 rtmp-pu

为了方便我把我的ngin的配置文件完整的贴出来:

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {worker_connections  1024;
}
rtmp {server {listen 1935;application myapp {live on;#record keyframes;#record_path /tmp;#record_max_size 128K;#record_interval 30s;#record_suffix .this.is.flv;#on_publish http://localhost:8080/publish;#on_play http://localhost:8080/play;#on_record_done http://localhost:8080/record_done;}}
}
http {include       mime.types;default_type  application/octet-stream;#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

四 启动服务器,测试

1 执行nginx/sbin/nginx 启动服务。你应该能够看到服务器也启用1935端口,就表示nginx已经支持rtmp推送流了。

[root@localhost conf]# netstat -antpl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:1935                0.0.0.0:*                   LISTEN      11908/nginx
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2674/portmap
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      11908/nginx
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2965/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2989/sendmail: acce
tcp        0      0 0.0.0.0:765                 0.0.0.0:*                   LISTEN      2703/rpc.statd
tcp        0      0 192.168.201.128:1935        192.168.201.1:55561         ESTABLISHED 11950/nginx: worker
tcp        0   1934 192.168.201.128:1935        192.168.201.1:55575         ESTABLISHED 11950/nginx: worker
tcp        0      0 :::22                       :::*                        LISTEN      2950/sshd
tcp        0      0 ::ffff:192.168.201.128:22   ::ffff:192.168.201.1:56019  ESTABLISHED 12197/sshd: root@no
tcp        0    592 ::ffff:192.168.201.128:22   ::ffff:192.168.201.1:53081  ESTABLISHED 3268/1

2 拷贝你/usr/local/nginx-rtmp-module-1.1.7/test/www 目录下的所有文件放到nginx的html下。这个是rtmp模块提供的测试案例。就是一个flash客户端推送流和一个播放流的案例;看起来如下:

[root@localhost www]# cd /usr/local/nginx/html/
[root@localhost html]# ll
total 60
-rw-r--r-- 1 root root   537 Feb  5 18:54 50x.html
-rw-r--r-- 1 root root 15145 Feb  5 19:05 bg.jpg
-rw-r--r-- 1 root root   511 Feb  5 19:06 index.html
drwxr-xr-x 2 root root  4096 Feb  5 19:05 jwplayer
drwxr-xr-x 2 root root  4096 Feb  5 19:05 jwplayer_old
-rw-r--r-- 1 root root  1460 Feb  5 19:07 record.html

五 测试,

1 打开浏览器输入地址:http://192.168.201.128/record.html  这是个推送流的测试地址。打开会提示你允许使用你摄像头。允许就行了。如下

2 打开另外一个浏览器,输入http://192.168.201.128/index.html 这个测试播放地址效果如下:

六 总结。

你可以用OBS来发布到nginx.也是可以的。总的来说这种方式还不错的,但是如果要实时性高,多人视频就不太适用。

参考文献:nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器

需要安装包和的朋友,可以给mail  845885222#qq.com

使用nginx搭建流媒体直播平台(该方式不适用与多人聊天)相关推荐

  1. 架构 | 如何从零开始搭建高性能直播平台?

    GitChat 作者:七夜 前言 现在直播已经成为移动互联网时代一个新的重要流量入口,从YY.斗鱼到花椒直播,直播已经成为人们分享交流的新方式,应用场景众多,主要分为: 金融类直播:金融直播可应用于实 ...

  2. GitChat·架构 | 如何从零开始搭建高性能直播平台?

    GitChat 作者:七夜 前言 现在直播已经成为移动互联网时代一个新的重要流量入口,从YY.斗鱼到花椒直播,直播已经成为人们分享交流的新方式,应用场景众多,主要分为: 金融类直播:金融直播可应用于实 ...

  3. 音视频开发(23)---音视频直播技术--10分钟搭建好直播平台

    音视频直播技术--10分钟搭建好直播平台 前言 今天给大家讲一下如何搭建最简单的音视频直播平台.在之前的文章中我已经给大家介绍过音视频直播技术架构,没看过的同学可以看一下.了解了直播的技术架构,我们就 ...

  4. 漫谈直播,从0认识直播并快速搭建专属直播平台

    漫谈直播,从零开始认识直播并快速搭建专属直播平台 author:pasca time:2018/12/05 目录 文章目录 漫谈直播,从零开始认识直播并快速搭建专属直播平台 目录 一.直播科普 1.直 ...

  5. ZEGO:如何从零搭建H5直播平台

    H5已成为品牌宣传最重要的表现方式,基于H5打造的的营销方案具有游戏化.场景化.跨屏互动等优势,能更好的展示商品促进用户转化.H5技术还有开发简单,研发周期短,用户接触成本低等特点,尤其是其强化了we ...

  6. vue+node.js手把手教你搭建一个直播平台(一)

    上一期,帅气的小羽给老铁们简单介绍了项目的功能以及需要用到的一些环境和工具,现在就让我们荡起双桨,撸起袖子,准备开始敲代码啦!!! 先甩锅,小羽主要是搞前端开发的,所以这期张主要讲后端内容,可能讲的不 ...

  7. 服务器搭建和使用 ubuntu_Ubuntu中使用Nginx+rtmp搭建流媒体直播服务

    一.背景 本篇文章是继上一篇文章<Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务>文章而写,在上一篇文章中我们搭建了一个点播服务器,在此基础上我们再搭建一个直播服务器, ...

  8. 利用NGINX搭建部署直播流媒体服务器

    直播如今是一个老生常谈的问题,怎么用于直播,大多数人只晓得,大佬某平台直播软件,点击开始即可直播.那么如何来搭建一个简易的直播平台呢?仅仅是有直播功能,没有涉及转码以及播放软件. 安装nginx以及r ...

  9. 搭建一个直播平台源码,可以选择的流媒体服务器

    流媒体服务器(Media Streaming Server / Live Streaming Server)是在互联网上做视频点播和视频直播的基础支撑软件系统,如果您要在互联网上做视频播出应用,如在线 ...

最新文章

  1. vs2010,vs2012注释快捷键
  2. 在eclipse中配置android ndk的自动编译环境builders
  3. PL/SQL开发五年工作经验精典实例
  4. carsim学习笔记5——carsim与simulink联合仿真
  5. BZOJ5212 ZJOI2018历史(LCT)
  6. excel趋势线公式导出_如何用Excel进行预测分析?
  7. 【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析
  8. 为 IDES471 激活中文
  9. Java知多少(50)Java throws子句
  10. oracle truncsysdate_oracle trunc截断日期函数
  11. easymock使用方法_EasyMock最终方法– PowerMock,JUnit 4,TestNG
  12. finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码...
  13. matlab中abs函数,Abs函数
  14. 实验三.局域网的组建
  15. 日语词频分析——mecab使用
  16. 【ROM制作工具】小白如何进行ROM解包,精简,修改,授权,打包详细图文教程
  17. odbc sqlstate:IM004
  18. 华为HCIP-DATACOM题库解析251-270(821)部分重复题目不带解析
  19. 小心了!通过一张照片我能找到你拍照的精确位置!
  20. plc触摸屏一体机的特点用处及PLC一体机的应用领域简介-深圳市顶控科技有限公司

热门文章

  1. 在递归中使用Continuation来避免StackOverflow(查找第K大的数)
  2. UNION ALL vs UNION
  3. SQL Server 索引结构及其使用(四)
  4. 线程同步--关键代码段(三)
  5. C++_类和对象_C++运算符重载_关系运算符重载_对== !=重载实现对象的对比_---C++语言工作笔记059
  6. Elasticsearch--高级-映射_修改映射 数据迁移---全文检索引擎ElasticSearch工作笔记019
  7. ES6新特性_ES6对象添加Symbol类型属性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记016
  8. android学习笔记---51_编码实现软件界面,把固定不变的界面写到xml中,逻辑改变的写到程序中,
  9. 杭电1716排列2 stl
  10. 随想录(网络编程中的一些问题)