现在,一起学习一下如何自己搭建一个流媒体服务器吧!

本次搭建流媒体使用的环境是centos 7.0+nginx;

让我们一起开始奇妙的流媒体之旅吧!



1、下载nginx-rtmp-module:

nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module

使用命令:

[php] view
plain
 copy

  1. git clone https://github.com/arut/nginx-rtmp-module.git  

将nginx-rtmp-module下载到linux中。

2、安装nginx:

nginx的官方网站为:http://nginx.org/en/download.html

[php] view
plain
 copy

  1. wget http://nginx.org/download/nginx-1.8.1.tar.gz
  2. tar -zxvf nginx-1.8.1.tar.gz
  3. cd nginx-1.8.1
  4. ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module
  5. make && make install

本次默认安装目录为:/root, add-module为下载的nginx-rtmp-module文件路径。

安装时候可能会报错没有安装openssl,需要执行命令:

[php] view
plain
 copy

  1. yum -y install openssl openssl-devel

3、修改nginx配置文件:

[php] view
plain
 copy

  1. vi /usr/local/nginx/conf/nginx.conf

加入以下内容:

[php] view
plain
 copy

  1. rtmp {
  2. server {
  3. listen 1935;  #监听的端口
  4. chunk_size 4000;
  5. application hls {  #rtmp推流请求路径
  6. live on;
  7. hls on;
  8. hls_path /usr/share/nginx/html/hls;
  9. hls_fragment 5s;
  10. }
  11. }
  12. }

hls_path需要可读可写的权限。

修改http中的server模块:

[php] view
plain
 copy

  1. server {
  2. listen       81;
  3. server_name  localhost;
  4. #charset koi8-r;
  5. #access_log  logs/host.access.log  main;
  6. location / {
  7. root   /usr/share/nginx/html;
  8. index  index.html index.htm;
  9. }
  10. #error_page  404              /404.html;
  11. # redirect server error pages to the static page /50x.html
  12. #
  13. error_page   500 502 503 504  /50x.html;
  14. location = /50x.html {
  15. root   html;
  16. }

当然了,root可以跟据自己的需求来改的。

然后启动nginx:

[php] view
plain
 copy

  1. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

关于更多rtmp的参数可以参考:https://github.com/arut/nginx-rtmp-module/wiki

4、开始推流

做好以上的配置后,就可以开始推流了,我们可以使用obs来推流。

在设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的。

秘钥可以随便填写一个,用来播放的时候识别播放哪个流媒体的,例如填写test等。

填写完毕后,点击开始串流,就说明我们的流媒体服务器搭建成功了。

5、观看直播(拉流)

观看直播就比较简单了,可以简单的使用h5的vedio标签就可以观看了。

可以访问http://xxx:81/hls/mystream.m3u8来观看直播,其中xxx为你的服务器IP地址,

或者使用

[php] view
plain
 copy

  1. <video>
  2. <source src="http://xxx:81/hls/test.m3u8"/>
  3. <p class="warning">Your browser does not support HTML5 video.</p>
  4. </video>

同上, xxx写的是你服务器IP地址。

然后使用手机访问这个网站就能够观看直播了。延迟大概在20S左右。

(在iOS的safari浏览器中可以正常观看)

写在最后

为什么延迟 那么高呢?这是因为服务器将视频流切断成一个个小的以.ts结尾的文件。

(hls文件夹内容。即推流到该文件夹了)

而我们访问的是.m3u8文件,这个文件内容是将一个个ts文件串联起来的,这就达到了一个播放的效果,所以看起来会有很大的延迟。

(m3u8文件内容)

如果降低延迟也不是没有方法,可以设置切片生成的大小以及访问的速度,但是这样大大增加了服务器的压力。

当然,我们也可以用rtmp拉流工具(VLC等)来看该直播,延迟大概在2-5S左右,拉流地址与推流地址一致。

搭建直播服务器,使用nginx与nginx-rtmp-module搭建流媒体服务器;的更多相关文章

  1. nginx搭建http和rtmp协议的流媒体服务器

    nginx搭建http和rtmp协议的流媒体服务器 时间:2013-09-23 23:52来源:佚名 作者:本站 举报 点击:232次 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtm ...

  2. 利用Nginx搭建http和rtmp协议的流媒体服务器[转]

    利用nginx搭建http和rtmp协议的流媒体服务器 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtmp协议:同时打开rtmp的hls功能资料:HTTPLive Streaming( ...

  3. rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加

    关键词:Nignx(http服务器):rtmp,hls(流媒体服务) 前言:感谢开源,感谢战斗民族.现在在做流媒体服务的一些工作,流媒体服务器搭建的网上教程多入牛毛,但是细细查看,发现很多同志贴上来的 ...

  4. 基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器

    上篇文章是基于Red5与ffmpeg实现rtmp处理NVR或摄像头的监控视频处理方案,有兴趣的朋友可以查看. Nginx及nginx-rtmp-module安装 新建目录 mkdir /usr/loc ...

  5. 基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器(二)

    前言 Nginx-rtmp-module插件针对RTMP协议中一些命令,实现了事件通知和exec外部脚本处理.这里我通过一个简单的SpringBoot项目和Python代码,快速搭建一个HTTP服务来 ...

  6. Nginx系列1.2:nginx-rtmp流媒体服务器添加权限认证(推流权限和播放权限)

    用到的工具:OBS Studio(推流).nginx-rtmp流媒体服务器.VLC(拉取流播放) Nginx系列1:ubuntu16.04编译出适合自己的nginx服务器 Nginx系列1.1:ubu ...

  7. nginx::基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器

    待续 ffmpeg -re -i "/home/bk/hello.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 4 ...

  8. 利用Nginx搭建http和rtmp协议的流媒体服务器

    http://www.linuxidc.com/Linux/2013-02/79118.htm

  9. 利用nginx与nginx-rtmp-module搭建流媒体服务器实现直播

    使用环境是centos 7.0+nginx:可以实现简单的流媒体服务. 先下载nginx-rtmp-module拓展: nginx-rtmp-module的官方github地址:https://git ...

  10. 流媒体基础实践之——RTMP和HLS分发服务器nginx.conmf配置文件(解决了,只能播放RTMP流而不能够播放HLS流的原因)

    user www www; worker_processes ; error_log logs/error.log debug; #pid logs/nginx.pid; events { worke ...

随机推荐

  1. Tomcat--远程Debug以及参数配置调优

    本文会讲解Tomcat远程Debug调试,Tomcat-manager监控(简单带过),psi-probe监控和Tomcat参数调优.本文基于Tomcat8.5版本. Tomcat远程Debug: 远 ...

  2. webpack 4.0尝鲜

    发布不久得webpack 4.0据说速度快了68% - 98%,然后还支持没配置文件,所以看起来很牛逼得样子 所以尝试一发 webpack和webpack-cli分离 现在执行webpack命令 必须 ...

  3. JasperReport填充报表6

    任何报告工具的主要目的是为了生产出高品质的文档.举报填充过程有助于报告工具通过操纵数据集来实现这一目标.需要报表填充过程的主要输入是: 报表模板:这是实际的JasperReport文件 报告参数:这些 ...

  4. storm的安装

    一. 安装storm要先本机搭建好zookeeper集群(手动目录安装或者CDH安装) 二. Java 6 Python 2.6.6 unzip(针对使用语言要安装好相应环境 比如java 要JDK和 ...

  5. numpy库数组属性查看:类型、尺寸、形状、维度

    import numpy as np   q = np.array([1,2,3,4],dtype=np.complex128)    print("数据类型",type(q))  ...

  6. RMQ—ST表

    RMQ(Range Minimum/Maximum Query),RMQ是一个求给定范围内最大最小值的问题.我们一般使用st算法来解决这类问题(Sparse Table).这个算法原理不难,主要是各种 ...

  7. poj2752

    poj2752找所有的前缀等于后缀,那就是找所有前缀等于后缀的前缀,递归再用栈存一下 #include<iostream> #include<cstdio> #include& ...

  8. 再也不怕数据丢失!阿里云RDS MySQL 8.0上线回收站功能

    背景 MySQL 在生产环境使用过程中,会伴随着开发和运维人员的误操作,比如 DROP TABLE / DATABASE,这类 DDL 语句不具有可操作的回滚特性,而导致数据丢失,AliSQL 8.0 ...

  9. Docx 生成word文档二

    /// <summary> /// 生产word 文档 /// </summary> public class GenerateWord { /// <summary&g ...

  10. GitBook的使用方法

    ---恢复内容开始--- 由于近期工作中使用gitbook编写讲义,现把出现的问题总结下: 1 . gitbook的安装 Gitbook与word等办公软件类似,能够编写文档,Gitbook中编写文档 ...