搭框架主要考虑几点:
1. 在可预期的产品下,我们需要支持哪些功能
2. 当前这款产品的推出时间点,也就是产品的研发时间
关于第一点,我们最终明确下来是:
1. 支持SIP、RTSP、H323及公司私有的呼叫信令协议
2. 支持点对点,可以支持和主流的VOIP音视频电话互通,可以和主流的会议平台互通,如PolyComm、科达、华为、思科等
3. 支持多人视频,主要是支持我公司的服务器
在这个需求之上,很明显可以看出,这个不是一个产品,而是多个产品。那么在多个产品的前提下,是否有通用的部分?
在此基础上, 我们总体上,划分了2个层次:业务层(应用层)和底层。
1. 底层使用C++撰写,主要功能包括呼叫信令及呼叫控制、音视频编解码、音视频的优化处理、网络收发等
2. 业务层使用JAVA/Obj-C撰写,主要功能包括业务信息处理、界面、音视频采集、音频外放、视频呈现等
大体架构定之后,开始考虑2个层次的小架构。