主要分析RTSPServer::RTSPClientSession针对客户端SETUP事件处理

一、 SETUP信令,handleCmd_SETUP源码解析

1)步骤1.03,parseTransportHeader(...),假设抓包音频track1,SETUP信令如下图:

解析"Transport:"字段,RTP/AVP=>默认传输协议为UDP,unicast=>单播,RTP客户端接收端口=>
clientRTPPortNum=54804,clientRTCPPortNum=54805
2)步骤1.05~步骤1.07,subsession->getStreamParameters,获取目的IP、RTP/RTCP发送端口等。根
据subsession是视频或者音频,调度到不同子类,详细分析下处理过程。
① 如果是视频,通过subsession会调度到ourVideoRealServerMediaSubsession类,subsession->
getStreamParameters时序图如下:

接着分析步骤1.10,如果是视频,createNewRTPSink(...)流程,时序图如下:

针对图中⑧,分析下fOutBuf = new OutPacketBuffer(...)创建,源码片段如下:

A、其中preferredPacketSize = 1000,maxPacketSize = 1100,
B、OutPacketBuffer::maxSize = 160000,
C、那么maxNumPackets = (maxSize + (maxPacketSize-1))/maxPacketSize =
      (160000 + (1100-1))/1100=146
D、fLimit =maxNumPackets * maxPacketSize=146 * 1100即分配了146个内存块为1100的缓冲区
E、fOutBuf->curPtr(),实际就是指向编码数据帧的指针,其中fTo也指向fOutBuf->curPtr();
② 如果是音频,通过subsession会调度到ourAudioRealServerMediaSubsession类,和视频调度类似,
不做详细分析。
3)解析完SETUP信令后,会给RTSP客户端发送如下回复信息,如下:

RTSP Server(LIVE555)源码分析(四)-SETUP信令的更多相关文章

  1. 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入

    使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...

  2. 40 网络相关函数(八)——live555源码阅读(四)网络

    40 网络相关函数(八)——live555源码阅读(四)网络 40 网络相关函数(八)——live555源码阅读(四)网络 简介 15)writeSocket向套接口写数据 TTL的概念 函数send ...

  3. 39 网络相关函数(七)——live555源码阅读(四)网络

    39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...

  4. 38 网络相关函数(六)——live555源码阅读(四)网络

    38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...

  5. 37 网络相关函数(五)——live555源码阅读(四)网络

    37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...

  6. 36 网络相关函数(四)——live555源码阅读(四)网络

    36 网络相关函数(四)——live555源码阅读(四)网络 36 网络相关函数(四)——live555源码阅读(四)网络 简介 7)createSocket创建socket方法 8)closeSoc ...

  7. 35 网络相关函数(三)——live555源码阅读(四)网络

    35 网络相关函数(三)——live555源码阅读(四)网络 35 网络相关函数(三)——live555源码阅读(四)网络 简介 5)NoReuse不重用地址类 6)initializeWinsock ...

  8. 34 网络相关函数(二)——live555源码阅读(四)网络

    34 网络相关函数(二)——live555源码阅读(四)网络 34 网络相关函数(二)——live555源码阅读(四)网络 2)socketErr 套接口错误 3)groupsockPriv函数 4) ...

  9. 33 网络相关函数(一)——live555源码阅读(四)网络

    33 网络相关函数(一)——live555源码阅读(四)网络 33 网络相关函数(一)——live555源码阅读(四)网络 简介 1)IsMulticastAddress多播(组播)地址判断函数 多播 ...

  10. 32 GroupSock(AddressPortLookupTable)——live555源码阅读(四)网络

    32 GroupSock(AddressPortLookupTable)——live555源码阅读(四)网络 32 GroupSock(AddressPortLookupTable)——live555 ...

随机推荐

  1. Nginx重启操作

    1.杀掉Nginx进程 killall nginx 2.启动Nginx /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/ng ...

  2. 转:MyBatis 日志打印

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012666996/article/details/79106599Mybatis SQL语句控制台 ...

  3. LVS简略介绍

    一.lvs是什么 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器.这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvir ...

  4. 树莓派利用摄像头实现web在线监控

    1.https://shumeipai.nxez.com/2021/10/21/raspberry-pi-usb-camera-to-realize-remote-network-monitoring ...

  5. 转发:基于Lerna打造多包管理最佳实践之道

    最近在看vue-cli的源码部分,注意到这一个仓库下维护了多个package,很好奇他是如何在一个repo中管理这些package的. 我们组现在也在使用组件库的方式维护项目间共用的业务代码.有两个组 ...

  6. shader graph 制作的双面shader

  7. UMA插件专题(一)——基础网格创建

    什么是UMA? UMA,Unity Multipurpose Avatar,是一个开源Avatar创建框架,通过它可以实现自定义人物(或任何生物)的模型,包括换装,改变身材样貌等功能. 现在先从UMA ...

  8. PointGNN未修改之前的结果 ---行人,骑行者

    dl 18 23

  9. 微信小程序中注册页面设计

    .wxml <text>姓名</text> <input placeholder="请输入姓名" bindinput="getname&qu ...

  10. 解决ssh $host jps bash: jps: command not found 问题

    问题描述 使用 ssh $host jps 命令报错,连本机也会有这样的情况,但是分开使用并没有问题,即ssh $host下执行jps命令并不会报错. 原因 因为ssh远程连接到服务器的环境变量中不包 ...