使用nginx搭建流媒体直播平台

一 概要说明

使用nginx搭建流媒体直播平台,目的就是要支持rtmp协议,实现用户使用rtmp(rtmp://192.168.201.128/myapp)协议推送流到服务器。然后其他用户点播该用户推送的视频流信息。既然是rtmp协议,所以可以用Adobe 的 FlashMediaLiveEncoder程序,也可以更专业的串流大师软件来完成前端的直播采集和编码。个人是比较喜欢使用串流大师的,因为这款软件是目前国内做得最专业的前端编码系统。老实说我其实也是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所需要的依赖包。注意不同系统或者模块需要的依赖包是不一样的。我这里值安装最基本的就行了。


  1. [root@localhost html]# yum install -y gcc gcc-c++  

  2. [root@localhost html]# yum install –y openssl-devel pcre-devel zlib-devel  

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

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


  1. [root@localhost local]# tar -zvxf nginx-1.4.7.tar.gz   

  2. [root@localhost local]# wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.7.tar.gz  

  3. [root@localhost local]# tar nginx-rtmp-module-1.1.7.tar.gz   

  4. [root@localhost local]# tar -zxvf nginx-rtmp-module-1.1.7.tar.gz   

  5. [root@localhost local]# cd /usr/local/nginx-1.4.7  

  6. ./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-rtmp-module-1.1.7  

  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


  1. [root@localhost test]# ll  

  2. total 56  

  3. -rwxrwxr-x 1 root root   49 Mar 24  2015 dump.sh  

  4. -rwxrwxr-x 1 root root   84 Mar 24  2015 ffstream.sh  

  5. -rw-rw-r-- 1 root root 1245 Mar 24  2015 nginx.conf  

  6. -rwxrwxr-x 1 root root   59 Mar 24  2015 play.sh  

  7. -rw-rw-r-- 1 root root  499 Mar 24  2015 README.md  

  8. drwxrwxr-x 2 root root 4096 Mar 24  2015 rtmp-pu  

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


  1. #user  nobody;  

  2. worker_processes  1;  

  3. #error_log  logs/error.log;  

  4. #error_log  logs/error.log  notice;  

  5. #error_log  logs/error.log  info;  

  6. #pid        logs/nginx.pid;  

  7. events {  

  8.     worker_connections  1024;  

  9. }  

  10. rtmp {  

  11.     server {  

  12.         listen 1935;  

  13.         application myapp {  

  14.             live on;  

  15.             #record keyframes;  

  16.             #record_path /tmp;  

  17.             #record_max_size 128K;  

  18.             #record_interval 30s;  

  19.             #record_suffix .this.is.flv;  

  20.             #on_publish http://localhost:8080/publish;  

  21.             #on_play http://localhost:8080/play;  

  22.             #on_record_done http://localhost:8080/record_done;  

  23.         }  

  24.     }  

  25. }  

  26. http {  

  27.     include       mime.types;  

  28.     default_type  application/octet-stream;  

  29.     #access_log  logs/access.log  main;  

  30.     sendfile        on;  

  31.     #tcp_nopush     on;  

  32.     #keepalive_timeout  0;  

  33.     keepalive_timeout  65;  

  34.     #gzip  on;  

  35.     server {  

  36.         listen       80;  

  37.         server_name  localhost;  

  38.         location / {  

  39.             root   html;  

  40.             index  index.html index.htm;  

  41.         }  

  42.         #error_page  404              /404.html;  

  43.         error_page   500 502 503 504  /50x.html;  

  44.         location = /50x.html {  

  45.             root   html;  

  46.         }  

  47.     }  

  48. }  


四 启动服务器,测试

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


  1. [root@localhost conf]# netstat -antpl  

  2. Active Internet connections (servers and established)  

  3. Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name     

  4. tcp        0      0 0.0.0.0:1935                0.0.0.0:*                   LISTEN      11908/nginx           

  5. tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2674/portmap          

  6. tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      11908/nginx           

  7. tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2965/cupsd            

  8. tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2989/sendmail: acce   

  9. tcp        0      0 0.0.0.0:765                 0.0.0.0:*                   LISTEN      2703/rpc.statd        

  10. tcp        0      0 192.168.201.128:1935        192.168.201.1:55561         ESTABLISHED 11950/nginx: worker   

  11. tcp        0   1934 192.168.201.128:1935        192.168.201.1:55575         ESTABLISHED 11950/nginx: worker   

  12. tcp        0      0 :::22                       :::*                        LISTEN      2950/sshd             

  13. tcp        0      0 ::ffff:192.168.201.128:22   ::ffff:192.168.201.1:56019  ESTABLISHED 12197/sshd: root@no   

  14. 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客户端推送流和一个播放流的案例;看起来如下:


  1. [root@localhost www]# cd /usr/local/nginx/html/  

  2. [root@localhost html]# ll  

  3. total 60  

  4. -rw-r--r-- 1 root root   537 Feb  5 18:54 50x.html  

  5. -rw-r--r-- 1 root root 15145 Feb  5 19:05 bg.jpg  

  6. -rw-r--r-- 1 root root   511 Feb  5 19:06 index.html  

  7. drwxr-xr-x 2 root root  4096 Feb  5 19:05 jwplayer  

  8. drwxr-xr-x 2 root root  4096 Feb  5 19:05 jwplayer_old  

  9. -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.也是可以的。总的来说这种方式还不错的,但是如果要实时性高,多人视频就不太适用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值