一、 设置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()时序 图如下:
标签:LIVE555,rtspServer,步骤,RTSP,时序,源码,创建,如下 From: https://www.cnblogs.com/shu-jie/p/17116457.html