-
Notifications
You must be signed in to change notification settings - Fork 400
AKStream的组成部分与运作原理
chatop2020 edited this page Jan 6, 2021
·
15 revisions
- AKStreamWeb
- AKStreamKeeper
- LibCommon
- LibGB28181SipServer
- LibLogger
- LibSystemInfo
- LibZLMediaKitMediaServer
- SIPSorcery
- AKStreamWeb是AKStream的总控制中心,是全局的流媒体管理API服务,包含了所有流媒体功能的控制,如摄像头注册,录制计划,rtp推流,ptz控制等。
- AKStreamWeb在一个集群中只运行一份,负责收集来源于AKStreamKeeper的流媒体服务信息,并进行流媒体服务的管理
- 集成Sip网关相关功能,向GB28181设备提供如注册、目录获取、推流请求、历史录像查询、PTZ控制等功能
- 集成操作系统性能信息收集功能,提供如CPU,内存,磁盘等相关情况
- 集成数据库操作功能,对系统运行过程中所产生的数据进行数据库持久化保存
- 集成ZLMediaKit的集群控制功能,统一管理、调度各ZLMediaKit流媒体服务器
- 集成非GB28181设备的拉流功能,实现除GB28181 Rtp流以外的其他流类型的拉取与转换
- 集成Swagger调试环境,提供Web形式的接口调试功能
- 集成WebApi,提供第三方应用的全功能接入
- AKStreamWeb引用包含了LibCommon、LibLogger、LibSystemInfo、LibGB28181SipServer、LibZLMediaKitMediaServer、SIPSorcery六个内部类库
- AKStreamKeeper是ZLMediaKit的治理程序,它用于流媒体服务器(ZLMediaKit)的相关控制,如控制流媒体服务器的启动,停止,重启,获取某个录制文件是否存在,裁剪与合并任务的执行等。
- 此服务针对于流媒体服务器进行部署,每一个流媒体服务(ZLMediaKit)都需要部署一个对应的AKStreamKeeper,此服务与AKStreamWeb通过WebApi进行通讯。
- AKStreamKeeper启动时,将自己的状态以心跳的方式汇报给AKStreamWeb,并帮助AKStreamWeb服务控制流媒体服务器(ZLMediaKit).
- AKStreamKeeper引用包含了LibCommon、LibLogger、LibSystemInfo三个内部类库
- LibCommon以.net类库形式存在的内部类库
- LibCommon主要提供的是系统中用到的各种枚举、结构、通用工具方法、数据库中间件等功能
- LibGB28181SipServer以.net类库形式存在的内部类库
- 它是一个完整的GB28181 Sip信令网关,是一个自治理的全功能类库,关于GB28181 Sip信令服务的所有功能都在此类库中集成
- 提供设备注册、设备注销、设备目录获取、设备状态获取、设备信息获取、设备推流请求、设备终止流请求、设备历史录制文件列表获取、设备历史录制文件推流、设备历史文件终止推流请求等Sip信令通讯功能
- 提供GB28181设备及其音视频通道的管理,向外提供各种事件的触发,如有设备注册事件、有设备注销事件、有设备就绪事件、有设备心跳事件等等
- LibLogger是基于log4net的日志记录框架
- 全平台的操作系统性能参数获取类库
- 可惜的是Windows平台下网络流量获取功能因.net core3.1的bug无法完美兼容支持,因此原因AKStream暂时无法正常在Windows操作系统上运行
- 管理流媒体服务器的类
- 集成提供流媒体服务器(ZLMediaKit)所有WebApi调用功能
- 集成提供AKStreamKeeper所有WebApi调用功能
- Sip信令协议栈
- FreeSql,数据库连接、操作所用的库,几乎支持所有关系型数据库
- Newtonsoft.Json,AKStream所有Json序列化与反序列化工作由此库完成
- ini-parser-netstandard,用于解析ini文件,主要用于读取和修改ZLMediaKit的config文件
- Swagger,用于提供WebApi接口的Web可视化调试