关于ZLMediaKit视频会议的一些规划
前言
近期我离职在家,时间比较自由,所以做了很多之前想做但是没时间精力去做的事情;这方面主要包括两块,一块是ZLM pro闭源版的整理和发布,本公众号前几篇文章已经提及,本文不再赘述;另外一块是ZLM开源的完善,近期我已经做了大量的提交,包括onvif客户端的实现、双向语音对讲的原生支持、网络框架构建系统的重构和性能优化、websocket-flv/fmp4/ts直播的秒开体验优化等改进,这块的更新我没有专门发文公告,感兴趣的用户可以查看git提交记录。
一些想法和规划
目前我在家已经呆了一个半月了,ZLM pro闭源版整理的已经差不多,暂时不用投入太多的精力去完善;开源版最近也做了很多改进优化增强,更深层次的重构或者迭代目前来看不是特别紧迫。近期metaRTC作者杨总在得知我离职后,跟我交流比较密集,他从其行业视角对视频会议、流媒体提出了一些看法,认为ZLM在视频会议应用场景有非常大的需求,有非常多的用户使用ZLM做为视频会议SFU服务,这点老实讲有点出乎我意料。之前我也在工作中基于ZLM初步实现过一套视频会议软件,但是可惜的是并没有成功商用,我觉得这也是一大憾事,就像当年ZLM开源前,也是一套未成功商用的废弃代码,但是谁知道在开源这么多年后成为了一个优秀的行业开源标杆呢?所以,我们觉得,如果能完善下ZLM对视频会议场景的需求,说不定能成为一个重要的发展方向,成为新的行业标杆!在这种背景,我和杨总一拍即合,决定联合推出一套基于ZLM和metaRTC开源生态联合打造的开源WebRTC视频会议系统。
将要做的事
目前我们给新的开源项目取名为myrtckit,名字一目了然,面向的就是RTC视频会议行业,同时也兼具直播、安防特色;另外,我们将来也打算在AI发力,实现实时字幕、翻译或者更具想象力的场景;要做的事情非常多,不过我们打算前期先尽快推出一个能用的产品,初期的规划如下:
-
服务端
- 流媒体能力基于ZLM打造,实现流媒体的核心能力,可能会针对视频会议场景进行优化定制。
- 实现mqtt、websocket等信令服务,主要实现房间的业务逻辑。
- 服务端视频会议录制,支持多路音视频录制,回放时不用管理多个视频文件。
- 语音室多路音频合流混音,支持VAD静音检测、降噪、增益,根据音量选择是否混音等。
- Docker/Kubernetes服务打包,一键启动。
-
客户端
- 基于metaRTC打造,实现webrtc核心协议栈,信令客户端等。
- AEC/AGC/ANS/VAD/CNG等多种音频处理。
- 桌面/文档远程控制与共享。
- windows/linux/mac桌面sdk和demo。
- android/ios原生sdk和demo。
- flutter/reactNative/uniApp/weex等sdk和demo。
-
网络Qos算法
- UDP/TCP/TURN支持和自适应切换
- nack/fec/svc/pacer等更多的弱网策略助力更强大弱网自适应能力。
以上工作服务端主要我负责,客户端主要杨总负责。
结语
目前我们已经在github创建组织和项目,地址为:https://github.com/myrtckit/myrtckit。不过目前还没有实质代码提交,要做的事情还很多,希望将来我们能和广大的开发者一起,勠力同心,共同打造和完整该项目,打造成开源的视频会议行业标杆!路漫漫其修远兮,吾将上下而求索!