流服务器使用常crtmpserver作为原型,为主播提供推流服务,为用户提供拉流服务。流服务分为源管理节点(SM),源节点(SP)以及边缘节点(EP)。三种类型的节点为层级关系。
一般主播通过dns获取源节点的ip,向源服务器推流。源服务器收到主播流之后,向源管理上报该主播的流信息(每个主播有唯一的id号)。用户从边缘节点拉流,边缘节点向所设定的唯一上级源服务器拉取某个流编号的数据。源节点通过与源管理节点通信之后,确定该流id的来源,源节点取得主播推流的源服务器ip后,直接与该源节点通信,拉取流。
每个边缘节点如上所述,有一个固定的上游源节点。源节点之间是互相拉取的关系。
二、crtmpserver的通讯结构
三、crtmpserver的部署及启动方式
1、部署
目前使用rsync源作为程序包管理服务器。crtmpserver 目录结构目前为
|– etc
| `– crtmpserver.lua.sample
|– lib
| `– crtmpserver
| |– applications
| | |– SourceManagerClient
| | | `– libSourceManagerClient.so
| | |– SourceManagerServer
| | | `– libSourceManagerServer.so
| | |– admin
| | | `– libadmin.so
| | |– applestreamingclient
| | | `– libapplestreamingclient.so
| | |– appselector
| | | `– libappselector.