在淘宝/萤石/乐橙/微吼/趣看等类型商业直播应用大规模开展的今天,高大上的直播形态似乎占据了主流,然而这些直播对于普通型的公司似乎成本有点高,而且不能够长线、无顾虑地进行,所谓无顾虑地进行直播,指的不是直播系统的稳定性,而是其成本的稳定性,试着对比一种一直在被流量消耗扣钱的心态和每天乐此不疲地用花生壳动态域名解析进行直播的心态,是完全不一样的体验;

通过EasyDarwin开源项目、开源社区、开源用户,我们接触了大大小小各行各业的直播需求形态,大多数用户选择了最省钱的一种方式:用自有的IPC安防摄像机做为视频源(摄像机+拾音器),用企业自己的固定线路进行长时间不间断的常态化直播,省钱啊!

上面说到的这种需求形态,在toB类的企业级应用中,尤其是在较大型的企业需要,如:石油、航天、安监、农业,他们有一个共同点,前期已经投入了大量的经费构建自己的专用网络,有固定IP,带宽上下行足够大,流量不用也是浪费,基于自身安全保密考虑,需要在自建的网络中建设直播方案;

场景要义:有带宽,有服务器,有固定IP,有摄像头,就想做自己的直播,不想用CDN,采用一切可以采用的资源,自建流媒体服务!

二、技术实现方法

基于以上的场景需求,技术层面上,流媒体系统的业务需求基本就是:

1、RTSP安防流转RTMP互联网流,进行互联网RTMP/HLS(m3u8)直播
  • 此部分是功能的核心,如何能够稳定、支持重连、低延时、时间戳均匀地进行RTMP、HLS直播,大部分情况下,ffmpeg技术是开发者的首选,能够兼容绝大部分的RTSP流和高效的RTMP推流,而且能够保持低延时,如果仅仅是用来做一个演示Demo,那么用ffmpeg的命令就能搞定,通过:ffmpeg -re -i rtsp://xxx -f flv rtmp://xxx,这种命令形式,就能达到基本的效果。但是这样会有一个缺点,就是ffmpeg.exe目前不带自动断线重连的功能,所以,ffmpeg.exe只能做为临时演示的Demo来用;
  • 另一种方式就是基于ffmpeg或者 EasyRTSPClient + EasyRTMP 技术的二次开发功能,自己开发出支持重连的RTSP拉流转RTMP推流的功能,这个方案我们在博客《EasyRTMP实现将RTSP流转换成RTMP流实现RTSP直播转RTMP直播的功能》和《EasyRTMP+EasyRTSPClient实现的多路(支持断线重连)RTSP转RTMP直播推流工具》中已经详细描述。ffmpeg来做的话,也将会是同样的方法,对每一路直播的“RTSP转RTMP”维护一个Session,每一个Session有一个ffmpeg拉流的RTSPSource和一个RTMP推流的RTMPSink,ffmpeg再维护RTSPSource的重连和RTMPSink的重连,以达到对IPC摄像机源和RTMP流媒体服务器/CDN的稳定连接和流转发;
2、外围对这些RTSP输入源与RTMP输出源进行通道化的管理;

按照1中的描述,我们不但要做“RTSP流转RTMP流”的功能,还要做一个外围的、有效的Source和Sink,从配置、修改、启用/禁用、列表查询、到平台对接等一系列功能的管理系统,这个功能其实就是类似NVR的通道管理的概念,而且通道管理还需要增加一些增值化的服务就更好了,比如:在线状态、通道快照、是否启用音频、是否长时间拉流推流/还是有人看的时候再拉转推(也就是按需直播的概念),等等一系列的管理功能;

3、互联网化的多现场云端集中化管控

有时候,随着我们的系统应用场景中,现场数量超过一个,而且经常有需要对现场接入摄像机进行不受限制的云端管控的需求的时候,我们就会遇到这样的一些问题:

  • 流媒体转换服务(RTSP转RTMP)置于内网现场,多个内网现场的
    需要在云端进行集中化的管控;
  • 我们需要一套能够在解决以上所有问题的同时,能够对所有接入的摄像机、NVR、视频设备进行可视化运维管理的系统;
  • 如果我们能够在云端就能够在云端就能够进行现场视频设备的问题排查、数据运维,那将会节省多少成本?

三、方案推荐

上面描述了这种业务需求的要义和解决方案方法,实际对于大部分的企业,如果从底层开发做起,需要非常多年限的技术积累,而且对于大部分的企业来说,专注于上层应用可能会比在这种技术底层上消耗大量的精力时间,要获得到更大的收益,所以,我们更倾向于推荐成熟、可靠、知识产权完备的产品:EasyNVR,

这个在之前的博客中也已经详细描述过一些应用的场景了《基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控》,EasyNVR在这一块已经经过了很多用户和应用场景的论证,对一般的企业级直播需求是完全能够满足的,而且还能对接到CDN,可以说是一款足够“小而美”的应用产品!

1、EasyNVR适用于各种网络场景中

java 怎么接萤石云视频 萤石视频怎么链接_RTSP转m3u8直播


java 怎么接萤石云视频 萤石视频怎么链接_RTSP转m3u8直播_02


java 怎么接萤石云视频 萤石视频怎么链接_安防摄像机直播_03

2、EasyNVR适用的案例

基于EasyNVR实现了很多行业场景的直播需求,目前已经广泛应用于石油油田、水利大坝、园区监控、幼儿园直播、景区直播:

java 怎么接萤石云视频 萤石视频怎么链接_RTSP转m3u8直播_04

上为一水利监控项目应用,EasyNVR服务器一边拥有内网访问权限,一边拥有公网固定IP,采用的是方案1x

java 怎么接萤石云视频 萤石视频怎么链接_RTSP网页无插件播放_05

上为一施工工地网页监控项目,采用的EasyNVR方案一

java 怎么接萤石云视频 萤石视频怎么链接_RTSP转RTMP_06


上为一幼儿园直播监控项目,面向家长进行幼儿园微信直播,采用的EasyNVR方案一


java 怎么接萤石云视频 萤石视频怎么链接_java 怎么接萤石云视频_07


上为一园区监控网页监控项目,采用的EasyNVR方案一


java 怎么接萤石云视频 萤石视频怎么链接_RTSP网页无插件播放_08


上为一施工工地网页监控项目,采用的EasyNVR方案一


java 怎么接萤石云视频 萤石视频怎么链接_安防摄像机直播_09


上为中石油地点网页监控项目,采用的EasyNVR方案二


java 怎么接萤石云视频 萤石视频怎么链接_RTSP转RTMP_10


上为黄山某景区微信直播项目,采用的EasyNVR方案二

EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发;