Skip to content
chatop2020 edited this page Dec 9, 2022 · 20 revisions

更新情况

较大更新时会做出相关说明

2022-12-09

  • 适配最新的ZLMediaKit,当发现新版ZLMediaKit程序时,会自动切换其config.ini文件为最新版本的格式,同时保留原config.ini中的MediaServerId以确保之前的相关配置仍然有效
  • 修复已知的一些bug
  • 对稳定性与可用性上做了较大的加强

2021-12-25

  • 正式将AKStream更新到.Net6框架

2021-10-20

  • 更新LibGB28181SipClient功能
  • 向上级平台提供共享流响应(推流)
  • 向上级平台提供终止共享流响应(结束推流)
  • 支持向上级平台推送非GB28181流(将普通的流,如rtsp,rtmp,http等流推到gb28181服务端)

2021-10-15

  • 主分支切换到.Net5平台,AKStream已经全面采用.Net5
  • 删除Net5_dev分支

2021-10-14

  • 新增Net5_dev分支,将AKStream全面切换到.Net5平台,获得更好的系统性能
  • 新增GB28181级联功能,可做为下级平台向上级平台级联(实验性,未完成所有功能)
  • GB28181级联功能已支持内容
  • 向上级平台注册自己
  • 向上级平台保持心跳
  • 向上级平台提供自己的设备状态
  • 向上级平台提供自己的设备信息
  • 向上级平台提供自己的音视频流通道
  • 向上级共享流(推流,还未实现)
  • 向上级终止共享流(结束推流,还未实现)
  • 向上级提供录像文件查询(还未实现)
  • 向上级提供回放流(还未实现)
  • 向上级提供PTZ控制(还未实现)
  • 向上级提供非28181流的共享与结束(还未实现)
  • 系统中的各种优化与完善,以及发现的bug的处理
  • 配合GB28181级联,数据库增加三个字段,分别为以下内容
   /// <summary>
        /// 是否为可分享通道?
        /// 如果为true,则此通道可以被推往其他服务器
        /// </summary>
        public bool IsShareChannel
        {
            get => _isShareChannel;
            set => _isShareChannel = value;
        }

        /// <summary>
        /// 分享通道地址
        /// 如果IsShareChannel为true,而ShareUrl为空,则表示此通道可以分享给GB28181服务器
        /// 如果IsShareChannel为true,而ShareUrl不为空,则表示此通道可以分享线GB28181服务
        /// 器的同时还可以分享给其他流媒体服务器
        /// </summary>
        public string? ShareUrl
        {
            get => _shareUrl;
            set => _shareUrl = value;
        }

        /// <summary>
        /// 共享通道时此通道的唯一id
        /// gb28181时可以是deviceid
        /// 其他服务时可以按照其他服务的
        /// 规则来确定此id
        /// </summary>
        public string? ShareDeviceId
        {
            get => _shareDeviceId;
            set => _shareDeviceId = value;
        }

2021-04-25

  • 完善了GB28181的历史视频获取、获取状态查询功能
  • 完善了GB28181的历史视频回放功能
  • 修复和完善各种GB28181推流过程中的异常情况
  • 对无人观看断流做了优化
  • 优化裁剪合并任务功能,对异常情况处理更加完善,对FFMPEG裁剪1秒内视频异常进行处理
  • 对Linux/Mac操作系统下的磁盘有效性进行进一步识别,对无效磁盘进行过滤
  • 对Linux下无法获取CPU使用率问题进行修正
  • 对于个别Linux发行版中无法正确获取网络流量信息问题进行修正
  • 同步更新ZLMediakit的OnStreamChange事件新增属性
  • 对Onpublish事件进行补偿以保证推流稳定性
  • 修正PPP拨号模式下无法获取网络流量问题
  • 修正不生成hls流地址的问题
  • 众多稳定性可靠性方面的优化与调整

2021-03-12

  • 增加了dev分支,针对于之前的问题做了统一修复,测试完成以后,会合并到主分支
  • 去除了在线视频列表,取消lock
  • 引入LiteDB实现在线列表的保存与修改
  • 优化了Sip推流的相关功能,使之更加稳定
  • 解决了以前遗留的相关问题(非GB28181)
  • 修复了裁剪合并任务时间不准的问题

2021-02-25

  • 考虑取消SystemInfoLibrary的第三方库,由于此库导致ARM操作系统无法运行
  • 取消SystemInfoLibrary第三方库的硬件信息获取功能
  • 增加MemoryMacValue类用于获取Mac下的内存信息
  • 重新启用MemoryLinuxValue类用于取代SystemInfoLibrary库的相关功能
  • 修正了一个空闲内存计算错误的问题

2021-02-04

  • 对GB28181 Sip网关异常情况做了较多完善
  • 优化各种代码结构与问题的修复
  • 进一步统一了变量、参数名称
  • 大量实际测试后的反馈修改与问题修复
  • 增加了非rtp端口范围的参数控制(Keeper配置中的RandomPort选项)
  • 增加了对每路音视频通道录制切片时长的控制字段(VidelChannel表中的RecordSecs)
  • 增加FFmpeg拉流时的ffmpeg拉流模板功能
  • 本次版本需要使用最新的ZLMediaKit进行配合(预计在2021-02-08以后的ZLMediaKit版本会支持上面的特性)

2021-01-11

  • 修复好了Windows下的网络信息获取功能
  • 对Sip网关udp协议下的nat穿透做了进一步的优化
  • 修正了Sip网关不会发断流信息的bug
  • 修正了AKStreamKeeper中在Windows平台下获取磁盘信息里的一个空指针错误
  • 修正了几个Sip提示写错的地方

AKStream介绍


  • AKStream是StreamNode(全名StreamNode-GB28181)的升级重构版本,AKStream继承了StreamNode的设计结构,但90%以上的代码全部重写,AKStream在代码设计,结构,思想等层面要远优于StreamNode。
  • AKStream与StreamNode一样,还是使用全国最棒的ZLMediaKit作为其流媒体服务器,AKStream支持对ZLMediaKit的集群管理(通过AKStreamKeeper-流媒体治理组件),可以将分布在不同服务器的多个ZLMediaKit集群起来,统一管理,统一调度。
  • 得益于ZLMediaKit流媒体服务器的强大,AKStream全面支持H265/H264/AAC/G711/OPUS等音视频编码格式,支持GB28181的Rtp推流、GB28181-PTZ控制、内置流代理器的http、rtps、rtmp拉流(支持H264,H265/ACC/G711)和ffmpeg流代理器的几乎所有形式的拉流(支持几乎所有格式及转码),将推拉流转换成RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4等几乎全协议的互相转换以供第三方(APP,WEB,客户端等)调用播放。
  • AKStream支持linux、macos、Windows可基于x86_64,ARM CPU架构(由于.net core下无法正确获取到windows的流量信息,这边将Windows系统的网络参数略过, 在Windows平台上,需要自己把各配置文件写好,系统自动生成可能会存在问题)。
  • 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。
  • 提供完善的标准Restful WebApi接口,供其他语言调用。
  • AKStream的GB28181 Sip信令网关重新编写,不再使用StreamNode方案中的那个Sip网关,网关更加稳定可靠。目前仅支持GB28181-2016标准(由于没有其他版本协议的设备,没有做过详细测试),但由于新的Sip网关的高可扩展性,可以根据自己的需要进行功能扩展。
  • AKStream使用.Net5框架,采用C#语言编写。
  • 数据库部分使用开源项目freeSql数据库类库,支持数据库类型众多,如sqlite、mssql等,建议使用Mysql 5.7以及以上版本。
  • AKStream将之前StreamNode的众多使用反馈做了集中处理与优化,使之更有适应性,可用性;比StreamNode在上体系更加完整,代码质量更高。

AKStream结构


  • 放一张AKStream的完整结构图,以供理解AKStream的动作原理(采用StreamNode的图,原理是一样的)
  • 具体详细说明请阅读项目 WIKI(正在完善中...) 68747470733a2f2f692e6c6f6c692e6e65742f323032302f30392f32392f78776b6557386167597370484b55742e6a7067