安防领域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直播流、录像检索、录像回放等功能了;
获取更多信息
Copyright © EasyDarwin.org 2012-2017