RTSP Server(LIVE555)源码分析(二)-服务器创建

2023-07-29,,

一、 设置RTSP服务器配置

步骤1.5:rtspServer_Init--->BasicTaskScheduler::createNew()时序图如下:

1)步骤1.54,BasicTaskScheduler0构造函数中创建HandleSet对象,通过HandlerSet* fHandlers来管理

HandlerDescriptor对象即管理RTSP客户端socket一些回调处理事件。BasicTaskScheduler0构造函数代码如下:

2)步骤1.55,schedulerTickTask中调用scheduleDelayedTask虚函数,实际上最后会调度到父类

BasicTaskScheduler0::scheduleDelayedTask(),在该函数中new AlarmHandler(proc, clientData, timeToDelay)

然后存于fDelayQueue延时队列(实际是个双链表实现)中,这时候就和之前我们说的AlarmHandler事件处理类联系起

来了。scheduleDelayedTask构造实现如下:

步骤1.6:rtspServer_Init---> BasicUsageEnvironment::createNew(*s_rtspServerObj.Scheduler)时序图如下:

步骤1.7:rtspServer_Init--->rtspServer_TskMain--->ourDynamicRTSPServer::createNew(...)时序图如下:

rtspServer_TskMain线程创建:

1)步骤1.71,RTSPServer被创建 ourDynamicRTSPServer::createNew(*env, authDB, xxx, eventCB, xxx, xxx),传入
几个重要参数,如:RtspScc_CfgInfo,包含音视频配置信息,eventCB参数即rtspServer_EventCallback 回调接口,
authDB参数即UserAuthenticationDatabase等。
2)步骤1.73,ourDynamicRTSPServer::createNew(xxx)中调用setUpOurSocket接口,实际会被调度到
RTSPServer::setUpOurSocket(xxx)中,在步骤1.75中调用setupStreamSocket进行socket创建、bind等操作。然后在
步骤1.76中修改socket发送缓冲区(50x1024)大小,接着进行socket监听(listen),默认监听大小为20个。源码实现如下:

3)步骤1.77,new ourDynamicRTSPServer时序图如下:

对⑤中,incomingConnectionHandlerRTSP时序图如下:

4)步骤1.81,s_rtspServerObj.rtspServer->InitResource,fVidSrcBuf[RTSP_SERVER_MAX_STREAM]数组初始化。
5)步骤1.82,s_rtspServerObj.rtspServer->setUpTunnelingOverHTTP(8000),创建8000端口HTTP服务,和
      RTSPServer创建类似,不做详细分析。
6)步骤1.83,s_rtspServerObj.rtspServer->setUpTunnelingOverHTTP(8080),创建8088端口HTTP服务,和
      RTSPServer创建类似,不做详细分析。
7)步骤1.84,env->taskScheduler().doEventLoop(),主进程循环处理RTSP客户端socket连接。doEventLoop()时序
      图如下:

RTSP Server(LIVE555)源码分析(二)-服务器创建的相关教程结束。

《RTSP Server(LIVE555)源码分析(二)-服务器创建.doc》

下载本文的Word格式文档,以方便收藏与打印。