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

一、 PLAY信令,handleCmd_withinSession源码解析

1)步骤1.03,当RTSP客户端发送PLAY信令时,可能携带"Range:"字段,npt=0.000,代表从0s开始到结束,
      npt=10-15,即从10s开始到15s结束,详细可以看RTSP协议相关文档,网络信令如下:
     

2)步骤1.08~1.09,关于streamState->startPlaying(...),需要区分视频/音频来分析;

① 如果是视频,streamState->startPlaying(...),源码代码如下:

A、中间不做详细分析,fUDPSink正常情况不会被创建,在SETUP信令步骤1.06中

            getStreamParameters中异常情况时才被创建,具体可看源码实现。所以最后肯定走

            fRTPSink->startPlaying(...),时序图如下:

            
      B、分析下步骤⑥中,关于fOurFragmenter = new ourH26xFUAFragmenter(...),源码如下:
           
           另外需要注意fSource本来指向ourVideoRealStreamSource类,创建ourH26xFUAFragmenter
           类后,就将fSource指向了ourH26xFUAFragmenter

 C、ourH26xFUAFragmenter类是公司二次开发重写后的,framerSource->setVidBuffer(...)创建

编码数据队列,源码如下:

          
      D、针对视频,步骤⑭,doGetNextFrame进行分析,该接口是虚函数,会调度到

          ourH26xFUAFragmenter类中,源码如下:

 E、接着分析fInputSource->getNextFrame(...),时序图如下:

② 如果是音频,streamState->startPlaying(...),和视频类似,暂不做详细分析;

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

  1. Go Revel - server.go 源码分析

    之前介绍了 Go Revel - main函数分析 http://www.cnblogs.com/hangxin1940/p/3263775.html 最后会调用 `revel.Run(*port)` ...

  2. Vue系列---理解Vue.nextTick使用及源码分析(五)

    _ 阅读目录 一. 什么是Vue.nextTick()? 二. Vue.nextTick()方法的应用场景有哪些? 2.1 更改数据后,进行节点DOM操作. 2.2 在created生命周期中进行DO ...

  3. ABP源码分析五:ABP初始化全过程

    ABP在初始化阶段做了哪些操作,前面的四篇文章大致描述了一下. 为个更清楚的描述其脉络,做了张流程图以辅助说明.其中每一步都涉及很多细节,难以在一张图中全部表现出来.每一步的细节(会涉及到较多接口,类 ...

  4. MPTCP 源码分析(五) 接收端窗口值

    简述:      在TCP协议中影响数据发送的三个因素分别为:发送端窗口值.接收端窗口值和拥塞窗口值. 本文主要分析MPTCP中各个子路径对接收端窗口值rcv_wnd的处理.   接收端窗口值的初始化 ...

  5. vuex 源码分析(五) action 详解

    action类似于mutation,不同的是Action提交的是mutation,而不是直接变更状态,而且action里可以包含任意异步操作,每个mutation的参数1是一个对象,可以包含如下六个属 ...

  6. jQuery 源码分析(五) map函数 $.map和$.fn.map函数 详解

    $.map() 函数用于使用指定函数处理数组中的每个元素(或对象的每个属性),并将处理结果封装为新的数组返回,该函数有三个参数,如下: elems Array/Object类型 指定的需要处理的数组或 ...

  7. Vue.js 源码分析(五) 基础篇 方法 methods属性详解

    methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head&g ...

  8. VOIP RTP RTSP 实现 Baresip 源码分析

    RTP 使用 udp 进行数据传输,udp 是不能保证,数据包一定可以到达的,也不提供时序.同时还有 MTU 限制. RTCP 用来配合 RTP 提供,传输报告,会话建立和退出. 一大批参考规范 * ...

  9. live555源码分析

    live555源代码下载(VC6工程):http://download.csdn.net/detail/leixiaohua1020/6374387 liveMedia 项目(http://www.l ...

  10. live555源码分析----RSTPServer创建过程分析

    最近五一回家,终于有机会能安静的看一下流媒体这方面相关的知识,准备分析live555的源码,接下来会把我读源码的过程记录成博客,以供其他的同路人参考. 因为再读源码的过程中,并不是一路顺着读下来,往往 ...

随机推荐

  1. Matlab %陆

    第六章 MATLAB IN ENGINEERING Polynomial Differentiation多项式微分  %幂级数 f(x) = x^3-2x-5; p = [1 0 -2 -5]  %自 ...

  2. 在 vuex 中建立一个 permission.js 文件用于合并静态和动态的路由规则

    结果会获取完整的用户的路由规则 // 新建一个vuex模块来专门处理权限相关操作 import { constantRoutes, asyncRoutes } from "@/router& ...

  3. 持续集成环境(6)-Tomcat安装和配置(编写中)

    安装Tomcat8.5 把Tomcat压缩包上传到tomcat服务器(tomcat专用服务测试服务器.生产服务器) yum install java-1.8.0-openjdk* -y wget ht ...

  4. ELK集群基础环境初始化

    集群基础环境初始化 1.准备虚拟机 192.168.1.7 192.168.1.6192.168.1.183 2.切换为国内centos源 3.修改sshd服务优化 [root@elk01 ~]# s ...

  5. 10.Java中Map的entrySet() 详解以及用法

    一.Map.entry是什么? Map是java中的接口,Map.Entry是Map的一个内部接口. 此接口为泛型,定义为Entry<K,V>.它表示Map中的一个实体(一个key-val ...

  6. centos7搭建kafka

    一.安装 java8 yum install java-1.8.0-openjdk.x86_64 yum install java-1.8.0-openjdk-devel.x86_64 二.安装 Zo ...

  7. (转载)Python 浅析线程(threading模块)和进程(process)

    线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 进程与线程 什么 ...

  8. 使用VSCode调试C#时,Console.ReadLine()弹出命令框调试

    原文链接:https://blog.csdn.net/qq_29503199/article/details/88351498   要在调试时读取输入,可以在 launch.json 中使用配置中的 ...

  9. vsftpd2.3.4 后门笑脸漏洞

    漏洞概要 在vsftpd 2.3.4版本中,在登录输入用户名时输入:)类似于笑脸的符号,会导致服务处理开启6200后门端口,直接执行系统命令 漏洞利用 攻击机:kali 2022 msfconsole ...

  10. jsp页面中的正则表达式--主要用于js判断文本格式

    一.方括号[] 举例: 二.^ 三.元字符 举例的话,就可以这么说,要实现要表示整数的话: []就表示输入的文本框里面的数字的第一位,可以这么写--->[1-9] 然后已知\d表示的与[0-9] ...