问题背景:
对于EasyNVR的功能中包含使用H5无插件直播。其实H5播放的是HLS流,就是一个个ts文件。我们的EasyNVR会将流切成一个个ts文件,播的的时候就是直接播放这个m3u8文件。对于接入摄像机路数少的的时候,磁盘I/O没什么太大的问题,当我们接入的摄像机过多,并且都是一直在读写ts文件的时候(必须使用HLS流的时候),这个时候磁盘的I/O就会是一个瓶颈问题。磁盘的读写速度跟不上,这将导致我们播放HLS流会出现卡顿甚至无法播放的情况。
解决方案:
对于这个问题,我们的解决方案就是ramdisk,就是虚拟内存盘使用计算机内存的一部分来模拟一个硬盘,相对于直接的硬盘文件读写来说,这种技术可以极大的提高在其上进行的文件读写的速度。
基于Easy NVR的方案执行:
备注:有需求的可以通过EasyNVR的配置来实现默认使用HLS流。
配置方法:
如果在PC上也需要采用纯H5无插件播放的方式,我们可以修改easynvr.xml中的flash_streaming_type字段为 1 来限定直播协议为HLS:
<PREF NAME="flash_streaming_type" >1</PREF>
对于ramdisk,实现的方式方法有很多,windowsds的实现也有对应的方法和软件,具体的操作方法可以上网搜索。以下的实现方式都是基于成功的将内存虚拟划分出硬盘。
步骤一:成功从内存里虚拟出相应的硬盘(虚拟硬盘大小根据自身的需求和内存的大小来评定);
步骤二:将EasyNVR的对应的ts文件的生成目录指定到虚拟的硬盘空间上;
打开nginx\conf目录下的easydss.conf文件;
步骤三:保存文件并重启软件EasyNVR;
实现效果:
前后磁盘信息对比:
页面实现效果:
虚拟硬盘展示:
关于EasyNVR
EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发;
点击链接加入群【EasyNVR解决方案】:383501345