小雉视频系统 流媒体 rtsp hls h264 h265 aac 高并发 低延时 系统 设计 录像 视频合成 转发 点播 快进 快退 单步播放 分布式集群

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/4/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


常见问题

  1. "小雉视频系统"是什么?
    "小雉视频系统"是使用"面向过程对象"框架开发的一个单进程软件,旨在集所有客户的需求于一体,在完善软件功能的同时也让老客户得到持续化的服务,达到开发者与客户的共赢;
  2. "小雉视频系统"有哪些功能?
    "小雉视频系统"是一个持续更新的软件,所有的新需求都会在主线版本中实现,并向下兼容,具体的功能请下载最新版本体验;
  3. "小雉视频系统"的售后服务有多长,能否满足项目周期的需要?
    "小雉视频系统"的第一个版本可以追溯到2010年,在经历了多次重构后,在2013-2014年后软件的框架稳定性,兼容性,扩展性,效率都有了优异的表现,能同时应用于linux,windows,嵌入式linux平台,cpu资源,内存,句柄,线程问题都有了定量跟踪的方式(参看本站的其他文章),并且配置能做到多样化(json,xml都支持),参数默认化(json中只写部分参数,系统会使用默认值自动补全其他参数),双向兼容(新版本可以兼容老版本的配置,老版本也能兼容新版本的配置),2014年至现在约5年的版本都可以相互兼容,都处于服务周期范围之内;
  4. "小雉视频系统"的优势是什么?
    "小雉视频系统"最近5年时间内所有的客户需求都集成到一起,按需启用,框架的稳定性,兼容性,扩展性,效率得到了验证,同时其强悍的版本兼容性可大大降低长周期项目的成本;
  5. "小雉视频系统"长周期的项目兼容,是否意味着软件的架构陈旧,无法引入新技术?
    "小雉视频系统"使用的框架规定了进程内模块设计,配置设计等软件开发相关的规范和技术要点,同时也定义了系统引导,内核,驱动,文件系统,启动,命令工具等一系列的规范,从2014年以来发布的版本的系统经历了centos6.3,centos7.1,centos7.3等系统版本的变化,但这些版本间是可以相互平滑切换的,即"小雉视频系统"的兼容不仅体现在配置的相互兼容,也支持跨系统版本,跨内核的兼容,2020年将推出centos8.1系统的"小雉视频系统",敬请大家体验centos8.1系统的"小雉视频系统"和centos7系列的"小雉视频系统"的无缝切换;

一,功能清单:
        1,单机版(多网口)支持400路以上视频流(1080及以上,4M码流)采集--已实现;

        2,支持全天录像--已实现mkv支持;

        3,支持硬盘滚动写入,磁盘满时自动删除最早的文件,支持磁盘配额--已实现;

        4,支持磁盘阵列,支持动态扩容--已实现;

        5,支持通用播放器播放储存的视频--已实现兼容vlc,portplayer;

        6,支持视频rtsp分发(不限客户端数量,瓶颈在网络)--已实现;

        7,rtsp使用kcp不公平协议抢占网络资源(在网络丢包,如无线网,可比tcp延时小50%以上)--已实现(同时支持tcp和udp);

        8,支持视频hls分发(不限客户端数量,瓶颈在网络,pc上的vlc,android上moboPlayer实测与海康网页直播延时1S)--已实现,测试中;

        9,支持视频文件rtsp点播--已实现;

        10,支持按时间rtsp点播视频(既视频回放,回放与实时视频相比最小延时约为2S,保证10S)--已实现;

        11,支持接收第三方程序发送的xml或json,并根据内容合成视频(延时约1S,保证5S)--已实现;

        12,支持远程配置系统--已实现;

        13,支持接受xml或json导入配置,方便第三方公司控制系统--已实现;

        14,支持ftp浏览和下载视频--已实现;

        15,支持客户端控制点播速度(可实现快速,慢速和单步播放)--已实现;    

        16,支持通过gb28181平台预览视频,控制球机(现只支持海康球机)--已实现; 

        17,支持拉取第三方gb28181平台的视频数据进行储存+rtsp转发+rtsp回放+hls转发+gb28181再推送 --已实现;

        18,支持"支持gb28181的相机"直接推送视频数据到服务器进行储存+rtsp转发+rtsp回放+hls转发+gb28181再推送,同时支持NAT穿透 --已实现;

        19,支持第三方使用GB28181协议访问本服务器的储存视频,同时支持第三方使用GB28181协议访问与本服务器属于同一集群的服务器上的储存视频--已实现;

        20,支持接入onvif相机,代理相机控制指令,实现集中控制;

        21,支持阿里云oss储存回放;

        22,支持分布式集群(各台主机相互独立,互不依赖,对客户端来说集群内的任何一个节点都是中心服务器,访问任何一台主机都能获取到集群内其它主机上的数据)--已实现;

        23,鉴于22条的特性,程序具有中心服务器热备,负载均衡等功能--已实现;

        24,加入以telnet方式运行程序,同时配合看门狗,保证系统稳定持续运行,参考文章:http://www.feitianzhi.com/boke/index.php/archives/5/;

二,系统优势
        1,程序采用C语言,支持arm,x86平台,具有跨平台特性;

        2,程序经历了三次重构,拥有先进的框架和良好的扩展性;

               1),首次编写使用传统的c面向资源对象设计(如一个相机一个对象,增加相机就增加一个类的实例),导致在通道过多时,会新建大量的对象,日志的数据量成倍增长,在处理大并发时系统将创建大量的线程,线各程的创建和消亡占用了过多的cpu,基于这些原因,在功能全开时程序只能做到100路以内的并发;

               2),第一次重构加入了线程池的机制,同时程序也去掉了第三方库(不再需要live555,ffmpeg等第三方库),依然使用面向资源对象设计,这个版本虽做了大量的修改,代码量极度减少,cpu占用降低,但并发数增加仍不明显;

               3),第二次重构改变了程序的设计风格,改用使用面向过程的设计模式(或面向过程对象的设计模式,一个过程一个对象,因系统内任何一个资源只经过一个过程一次,即完成整个任务所需要的过程数就是系统总的线程数,这让系统的线程数不再与通道相关,成为一个定值),解决了线程过多的问题,同时也省去了复杂的线程池,让系统变得高效简单,让系统并发数突破1000;

               4),第三次重构是对第二次重构的优化,也是真正工程化的实现,在第二次重构后,虽然并发数大大增加,但大并发时的一些不可预见性问题因程序不能追踪(因路数太多,用记录日志的办法效率低下,几乎是因量太大无法分析),系统bug的修复变得困难,这次重够加入了系统异常自动记录功能,在出现异常时,可自动定位并记录异常出现在源码的什么文件的多少行,同时还可记录出现问题时对应线程你关心的内存的值,大大加简化了系统bug定位和修复,让直接处理生产环境中的异常变为了可能,同时还增加了线程资源实时消耗的统计信息,能实时了解系统中各线程的cpu占用情况;这次重够还去掉了glib的依赖,系统不再使用链表,使用数组代替链表,修改所有的查找排序的算法为二分查找,让单系统达到万级并发成为了可能;

        3,系统不使用数据库,单进程,不依赖第三方库,简单可靠;

        4,系统同时支持xml和json通信,让第三方集成变得异常简单;

        5,程序使用配置导入导出方式进行修改程序,让程序可以向下并向后兼容,彻底解决版本不兼容给使用者带来的问题;  

小雉视频系统流媒体rtsphlsh264h265aac录像视频合成点播单步播放分布式集群