一、 设置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)源码分析(二)-服务器创建的更多相关文章

  1. 源码分析netty服务器创建过程vs java nio服务器创建

    1.Java NIO服务端创建 首先,我们通过一个时序图来看下如何创建一个NIO服务端并启动监听,接收多个客户端的连接,进行消息的异步读写. 示例代码(参考文献[2]): import java.io ...

  2. Tomcat源码分析二:先看看Tomcat的整体架构

    Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server.Service.Conn ...

  3. Vue源码分析(二) : Vue实例挂载

    Vue源码分析(二) : Vue实例挂载 author: @TiffanysBear 实例挂载主要是 $mount 方法的实现,在 src/platforms/web/entry-runtime-wi ...

  4. Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题

    4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...

  5. 框架-springmvc源码分析(二)

    框架-springmvc源码分析(二) 参考: http://www.cnblogs.com/leftthen/p/5207787.html http://www.cnblogs.com/leftth ...

  6. 十、Spring之BeanFactory源码分析(二)

    Spring之BeanFactory源码分析(二) 前言 在前面我们简单的分析了BeanFactory的结构,ListableBeanFactory,HierarchicalBeanFactory,A ...

  7. 多线程之美8一 AbstractQueuedSynchronizer源码分析<二>

    目录 AQS的源码分析 该篇主要分析AQS的ConditionObject,是AQS的内部类,实现等待通知机制. 1.条件队列 条件队列与AQS中的同步队列有所不同,结构图如下: 两者区别: 1.链表 ...

  8. dubbo源码分析1-reference bean创建

    dubbo源码分析1-reference bean创建 dubbo源码分析2-reference bean发起服务方法调用 dubbo源码分析3-service bean的创建与发布 dubbo源码分 ...

  9. 【Zookeeper】源码分析之服务器(二)

    一.前言 前面阐述了服务器的总体框架,下面来分析服务器的所有父类ZooKeeperServer. 二.ZooKeeperServer源码分析 2.1 类的继承关系 public class ZooKe ...

  10. 【Zookeeper】源码分析之服务器(二)之ZooKeeperServer

    一.前言 前面阐述了服务器的总体框架,下面来分析服务器的所有父类ZooKeeperServer. 二.ZooKeeperServer源码分析 2.1 类的继承关系 public class ZooKe ...

随机推荐

  1. 9.29 2020 实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令

    一.实验目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解调 ...

  2. 通过右键菜单生成pyd

    批处理 @echo off reg add "HKCR\AllFilesystemObjects\shell\构建PYTHON\command" /ve /t REG_SZ /d ...

  3. 微信公众号授权登录,整合spring security

    公司的业务需求,对接了微信公众号授权,通过微信公众号的接口拿到用户信息进行业务系统的登录,话不多说上代码,我的实现方式是整合了spingSecurity 首先是接口 @PostMapping(&quo ...

  4. Java基础学习——Arrays类

    1.数组复制 Arrays.copyOfRange(original, from, to) 此方法与System.arraycopy类似. 不同的是System.arraycopy需要提前声明目标数组 ...

  5. c# 数组 集合 属性访问 设置

    当只修改数组或者集合的某一个特定值时不会经过CLR属性封装器

  6. OSPF V3协议简介

     LSA1/LSA 2在ospfv3中,变成了只携带拓扑信息,区域内的路由信息注意到LSA 9中

  7. [ACTF2020 新生赛]Include 1

    首先进入靶场可以看到trip 查看源码 点击进入提示我们能不能找到flag 可以看到这里是文件包含,想着包含index.php但是根目录是自动索引的,无论输入什么都是trip页面 又想着包含flag. ...

  8. MySQL学习(八)BLOB和TEXT区别

    :都市为存储很大数据而设计的字符串数据类型,分别采用二进制和字符方式存储.当blob和text值太大时,innodb会使用专门的"外部"存储区域来进行存储,此时每个值在行内需要1~ ...

  9. PGF 概率生成函数 Probability generating function

    Probability Mass Function 离散随机变量的分布函数PMF 目录 随机结构举例 two classical combinatorial distributions PGF Pro ...

  10. vue之事件修饰符

    目录 修饰符 .stop事件 .self事件 .prevent事件 .once事件 修饰符 事件修饰服 释义 .stop 只处理自己的事件,子控件不再冒泡给父控件 .self 只处理自己的事件,子控件 ...