-
Notifications
You must be signed in to change notification settings - Fork 340
Home
chatop2020 edited this page Dec 9, 2022
·
20 revisions
- 适配最新的ZLMediaKit,当发现新版ZLMediaKit程序时,会自动切换其config.ini文件为最新版本的格式,同时保留原config.ini中的MediaServerId以确保之前的相关配置仍然有效
- 修复已知的一些bug
- 对稳定性与可用性上做了较大的加强
- 正式将AKStream更新到.Net6框架
- 更新LibGB28181SipClient功能
- 向上级平台提供共享流响应(推流)
- 向上级平台提供终止共享流响应(结束推流)
- 支持向上级平台推送非GB28181流(将普通的流,如rtsp,rtmp,http等流推到gb28181服务端)
- 主分支切换到.Net5平台,AKStream已经全面采用.Net5
- 删除Net5_dev分支
- 新增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;
}
- 完善了GB28181的历史视频获取、获取状态查询功能
- 完善了GB28181的历史视频回放功能
- 修复和完善各种GB28181推流过程中的异常情况
- 对无人观看断流做了优化
- 优化裁剪合并任务功能,对异常情况处理更加完善,对FFMPEG裁剪1秒内视频异常进行处理
- 对Linux/Mac操作系统下的磁盘有效性进行进一步识别,对无效磁盘进行过滤
- 对Linux下无法获取CPU使用率问题进行修正
- 对于个别Linux发行版中无法正确获取网络流量信息问题进行修正
- 同步更新ZLMediakit的OnStreamChange事件新增属性
- 对Onpublish事件进行补偿以保证推流稳定性
- 修正PPP拨号模式下无法获取网络流量问题
- 修正不生成hls流地址的问题
- 众多稳定性可靠性方面的优化与调整
- 增加了dev分支,针对于之前的问题做了统一修复,测试完成以后,会合并到主分支
- 去除了在线视频列表,取消lock
- 引入LiteDB实现在线列表的保存与修改
- 优化了Sip推流的相关功能,使之更加稳定
- 解决了以前遗留的相关问题(非GB28181)
- 修复了裁剪合并任务时间不准的问题
- 考虑取消SystemInfoLibrary的第三方库,由于此库导致ARM操作系统无法运行
- 取消SystemInfoLibrary第三方库的硬件信息获取功能
- 增加MemoryMacValue类用于获取Mac下的内存信息
- 重新启用MemoryLinuxValue类用于取代SystemInfoLibrary库的相关功能
- 修正了一个空闲内存计算错误的问题
- 对GB28181 Sip网关异常情况做了较多完善
- 优化各种代码结构与问题的修复
- 进一步统一了变量、参数名称
- 大量实际测试后的反馈修改与问题修复
- 增加了非rtp端口范围的参数控制(Keeper配置中的RandomPort选项)
- 增加了对每路音视频通道录制切片时长的控制字段(VidelChannel表中的RecordSecs)
- 增加FFmpeg拉流时的ffmpeg拉流模板功能
- 本次版本需要使用最新的ZLMediaKit进行配合(预计在2021-02-08以后的ZLMediaKit版本会支持上面的特性)
- 修复好了Windows下的网络信息获取功能
- 对Sip网关udp协议下的nat穿透做了进一步的优化
- 修正了Sip网关不会发断流信息的bug
- 修正了AKStreamKeeper中在Windows平台下获取磁盘信息里的一个空指针错误
- 修正了几个Sip提示写错的地方
- 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的动作原理(采用StreamNode的图,原理是一样的)
- 具体详细说明请阅读项目 WIKI(正在完善中...)