LiveNVR安防流媒体服务-解决磁盘IO瓶颈方案

LiveNVR安防流媒体服务,支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV分发,将传统安防监控设备互联化,无插件直播等。

磁盘I/O问题

对于LiveNVR的功能中包含使用H5无插件直播。其实H5播放的是HLS流,就是一个个TS文件。我们的LiveNVR会将流切成一个个TS文件,播的的时候就是直接播放这个M3U8文件。对于接入摄像机路数少的时候,磁盘I/O没什么太大的问题,当接入的摄像机过多,并且都是一直在读写TS文件的时候(必须使用HLS流的时候),这个时候磁盘的I/O就会是一个瓶颈问题。磁盘的读写速度跟不上,这将导致我们播放HLS流会出现卡顿甚至无法播放的情况。

解决方法

利用RamDisk,就是虚拟内存盘使用计算机内存的一部分来模拟一个硬盘,相对于直接的硬盘文件读写来说,这种技术可以极大的提高在其上进行的文件读写的速度。

概念简介:

什么是RamDisk?RamDisk就是将内存(RAM)的一部分当做硬盘(DISK)来使用。RamDisk有固定的大小,可以像正常硬盘分区那样去使用。 就操作时间来讲,RamDisk比真实的物理硬盘快很多,当系统关闭或断电时,保存在RamDisk中的数据会全部丢失。RamDisk可以成为一个存放临时数据的好地方。

基于LiveNVR的方案执行:

备注:有需求的可以通过LiveNVR的配置来实现默认使用HLS流。

配置方法:

如果在PC上也需要采用纯H5无插件播放的方式,我们可以修改LiveNVR.XML中的FLASH_STREAMING_TYPE字段为 1 来限定直播协议为HLS

	<PREF NAME="FLASH_STREAMING_TYPE" >1</PREF>

对于RamDisk,实现的方式方法有很多,Windows和Linux都有对应的实现方法。

步骤一 从内存里虚拟出相应的硬盘

虚拟硬盘大小根据自身的需求和内存的大小来评定

Linux RamDisk 执行方式

创建一个目录

  • 这个目录可以在文件系统的任何位置,比如:sudo mkdir ramdisk

  • 如果你想让所有用户使用这个RamDisk,那么更改目录的权限。

    sudo chmod 777 ramdisk

指定RamDisk的大小、文件系统和设备名,并挂载到一个目录下

  • 我可以根据自身和机器的需求来分配,我们暂时分配200m给RamDisk。运行下面的一行命令。

    sudo mount -t tmpfs -o size=200m myramdisk ramdisk

    备注:这条命令指定文件系统为tmpfs,RamDisk大小为200MB,myramdisk是我给它指定的设备名。

  • 如果我们运行下面的命令:

    mount | tail -n 1

    可以发现,RamDisk成功地挂载到了ramdisk;

  • 利用如下命令,进行普通硬盘和RAM硬盘的速度对比;

    dd if=/dev/zero of=ramdisk/test bs=1024k count=512 conv=fdatasync

卸载RamDisk:

`$ sudo umount ramdisk `  

这个目录中的所有数据丢失并释放占用的内存空间

Windows RamDisk 执行方式

使用软件来进行配置(window版本使用软件有很多,在这里就不推荐了);

步骤二 指定到虚拟的硬盘空间

将LiveNVR的对应的TS文件的生成目录指定到虚拟的硬盘空间上;

打开nginx\conf目录下的liveqing.conf文件();
Linux配置对应路径(填写绝对路径)

Windows配置对应路径

步骤三 保存重启

保存文件并重启软件LiveNVR,完成操作;

后面HLS播放时候,将通过RamDisk,解决磁盘I/O瓶颈问题

posted @ 2019-05-28 14:04  Marvin1311  阅读(416)  评论(0编辑  收藏  举报