安防领域HLS直播问题探讨

近期外出交流比较多,在之前的一篇博客《一种流量成本节省60%以上的手机直播微信直播H5直播幼儿园直播方案》我们说到了一种模式,就是当我们在做最近火热的幼儿园直播平台时,比较简单的做法是在幼儿园内部会部署一台工控机设备,上面跑一个RTMP推流程序,再在公网部署一套流媒体服务器,内网的RTMP推流服务将摄像机的视频流拉取到本地再不间断地推流到公网的RTMP流媒体服务器,这样就能在公网获得一个固定的HLS m3u8直播地址,这样就可以交给微信业务端,嵌入到直播业务中了,这种做法的好处:

  • 实现方法简单灵活,直接拉流+推流+HLS切片;

  • 微信HLS秒开,无等待过程,起播非常快;

  • 服务器上行流量多是免费的,所以,对流量的消耗没有影响;

唯一存在的问题是:

  • 太耗内网网络的上行带宽,比如一个家庭100M宽带,上行4M~8M,那么一路摄像机就算调整的比较低,控制在512kbps,一个月幼儿园只能满足8~16路左右的摄像机,要增加再多的摄像机,一种做法是降低画质到更低,还有一种就是增加带宽线路,显然两种都不是很好的方案;

  • 内网上行带宽基本被全时段占据,连办公网络也会收到影响,简单说就是,传文件都传不出去了,因为带宽已经被上行的视频直播流量用掉了;

方案选择

之前在我们的《基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案》中,我们是实现了一种按需推流直播的方案,这种方案在什么情况下是效果是比较好的呢?

  • 内网摄像机太多太多了,都同时上传直播视频不大合适;

  • 观看的客户端是原生App,直接可以采用RTMP播放;

因为采用按需直播的形式,HLS是临时切片的,也就是说这个切片过程会因为终端的不同,起播消耗的时间也不一样,体验会比较差,那么当您的应用对摄像机的画质要求不高,也就是画面可以尽量压缩、或者内网的摄像头数量不多,就那么几个,占用不了多少上行带宽资源,那么我们可以采用内网不间断RTMP直播推流,公网RTMP流媒体服务器不间断直播切片的方案了;

方案实现

那么我们如何实现这种方案呢,也就是如何在公网一直进行内网摄像头的RTMP/HLS直播,我们可以采用EasyNVR+EasyDSS的方案!

第一步:公网流媒体服务器下载并部署EasyDSS流媒体服务器

直接在EasyDSS官网下载EasyDSS流媒体服务器版本,其中包含了EasyDSS流媒体服务器Windows/Linux版本及使用手册PDF:

主要配置节点:

第二步:内网主机下载并部署EasyNVR

在EasyNVR官网:http://www.easydarwin.org/easynvr,下载EasyNVR最新版本,其中包含EasyNVR Windows/Linux版本、EasyNVR使用文档PDF和二次开发接口文档PDF;

常规配置按照EasyNVR使用手册中配置即可,这里说一下需要达成本文方案所需要的关键配置方法:

  • 配置EasyNVR的nginx_rtmp_ip和nginx_rtmp_port为公网的EasyDSS流媒体服务器的IP和RTMP端口;
  • 将每一个EasyNVR的通道配置为“非按需直播”,也就是不间断从摄像机拉流,再推到RTMP流媒体服务器;

第三步:调用EasyDSS流媒体服务器接口获取直播地址

完成以上两步之后,就可以直接调用公网的EasyDSS文档中描述的接口,例如:getlivesessions、query_record_devices等等接口,获取摄像机的RTMP直播流、HLS直播流、录像检索、录像回放等功能了;

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyNVR+EasyDSS实现简单套路的RTMP、微信直播、录像、回放方案的更多相关文章

  1. 实现RTSP摄像机进行网页直播和微信直播的技术方案:EasyNVR自动更新方法

    问题背景: 1.EasyNVR的用户越来越多,技术人员一一对应解答效率不高: 2.随着EasyNVR应用场景的不断增加,以及EasyNVR自身在技术上的不断优化,版本更新比较快: 3.由于开发人力有限 ...

  2. 网页直播、微信直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的easynvr

    近期遇到好多客户咨询关于实现微信直播.或者是将直播页面集成进入自己项目中. 该方案的主要目的:完成在公网一直进行内网摄像头的RTMP/HLS直播! 实现方案的具体实现: EasyNVR+EasyDSS ...

  3. 基于EasyNVR+EasyDSS H5视频直播二次开发实现业务需求:直接使用播放页面

    之前的"网页直播.微信直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的easynvr"有介绍一些功能.由于客户需求,我们定制一下功能.给该套方案添 ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器的视频直播录像、检索、回放方案

    需求背景: 近期遇到客户反馈对于直播摄像机录像功能是有一定的需求点的,其实EasyDarwin团队早就研发出对应功能,只是用户对于产品没有足够了解,因此本篇将对录像功能来做一次介绍. 首先,录像就是对 ...

  5. EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS!

    2017年很长很长一段时间没有更新EasyDarwin开源项目了,虽然心里有很多EasyDarwin功能扩展的计划:比如同步录像.同步RTMP/HLS直播输出.拉模式转发优化.Onvif接入.GB28 ...

  6. ffmpeg+EasyDSS流媒体服务器实现稳定的rtmp推流直播

    本文转自EasyDarwin团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/74783269 需求 在做EasyDSS开发时,总 ...

  7. 实现RTSP网站微信直播方案EasyNVR(linux版)部署问题之:ERR_CONTENT_LENGTH_MISMATCH

    发现问题: 想要优化一下EasyNVR相关功能,内部测试软件,于是在linux系统中部署了一台EasyNVR.当部署好,运行起来发现问题: EasyNVR的配置页面数据出不来. 分析问题: 基于是we ...

  8. EasyNVR无插件播放HLS/RTMP网页直播方案前端完善:监听表单变动

    在上一篇博客中我们表述完了防止提交成功后多余操作提交的一个过程:其中的精髓在于ajax的触发事件的使用. 而这篇博客主要想说明一下如何实时的判断出表单是否发生变化. 问题表述: 在网页前端的开发过程中 ...

  9. EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放

    之前在进行EasyNVR多屏开发的时候,由于多屏功能不需要在手机端展示出来(pc多播放为RTMP,手机端播放为HLS),因此只注意到了引用videojs来进行rtmp的播放.由于不同项目需求不同,对h ...

随机推荐

  1. jemalloc原理分析

    netty4引入了内存池的概念,它的主要思想源自于jemalloc,由于难以理解netty中这一块的代码,我决定先看一看网上的相关文章 官方git jemalloc原理分析 jemalloc和内存管理 ...

  2. Linux笔记:vim

    文件搜索后显示高亮,即使退出编辑高亮依然存在.使用以下几个方法: 1)指令模式下运行:nohlsearch 2)运行set nohlsearc,可永久关闭搜索高亮 3)搜索任意不存在的字符串

  3. 洛谷——P1996 约瑟夫问题

    P1996 约瑟夫问题 (什么?!要给学弟学妹讲约瑟夫问题?!难道就不怕我给他们讲错了吗?! 啊啊啊,为了不给学弟学妹们讲错,蒟蒻表示要临阵磨一下刀...) 题目背景 约瑟夫是一个无聊的人!!! 题目 ...

  4. 维生素C - 坏血症

    在地理大发现时代,许多水手在远洋航行时不幸罹患一种典型航海病,患者皮肤溃烂.牙龈出血不止,不久就会危及生命,这就是大名鼎鼎的坏血症,是一种因为缺乏维生素C而产生的的皮.粘膜下出血.齿龈肿胀.关节和肌肉 ...

  5. 洛谷 P3359 改造异或树

    题目描述 给定一棵n 个点的树,每条边上都有一个权值.现在按顺序删掉所有的n-1条边,每删掉一条边询问当前有多少条路径满足路径上所有边权值异或和为0. 输入输出格式 输入格式: 第一行一个整数n. 接 ...

  6. 在网页里插入flash的代码

    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://down ...

  7. Java的日志模块

    目前主流的是是logback和log4j2,它们底层实现用的都是slf4j,通过slf4j-api调用 使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类如:Logger logge ...

  8. ALBB 找公共最长连续字母序列的长度

    问题描写叙述 给定一个 query 和一个 text .均由小写字母组成.要求在 text 中找出以相同的顺序连续出如今 query 中的最长连续字母序列的长度. 比如, query为"ac ...

  9. struts2设置默认首页

    在默认情况下,我们一般希望.当我们在浏览器中输入127.0.0.1:8080/project_name时候跳到项目的首页,那么在struts中我们这么设置呢?光加上<default-action ...

  10. java wait(),notify(),notifyAll()的理解

    这个三个函数来自Object类,众所周知它们是用于多线程同步的.然而,有个问题却一直没搞清楚,即notify()函数到底通知谁?<Thinking in JAVA>中有这么一句话,当not ...