主要分析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. 实验2 C语言分支语句、循环语句应用编程

    一.实验目的 掌握格式化输出函数printf()和格式化输入函数scanf()的用法 掌握单个字符输出函数putchar()和单个字符输入函数getchar()的用法 理解结构化程序设计的三种基本结构 ...

  2. OpenCV图像拼接函数

    图像拼接函数 第一种方法:通过遍历图像,将待拼接的图像每个像素赋值给输出图像 //图像拼接函数 //imageVector 输入图像数组 //outputImage 输出图像 //colCount_ ...

  3. java学习笔记(五)运算符

    ++ --   自增自减 a++ 执行完这行代码后,先给b赋值,再自增 ++a 执行完这行代码前,先自增,再给b赋值 Math类

  4. pytest之运行环境

    简介 pytest是Python最流程化的单元测试框架,它具有允许直接使用assert进行断言,而不需要使用self.assert*:可以自动寻找单测文件.类和函数,还可支持执行部分用例:Modula ...

  5. Windows下fmt库的链接与使用

    下载源码. 使用mingw编译源码.注意设置cmake文件的产生路径.pkgconfig文件的产生路径(windows下用不到产生的pc文件).库的安装路径. make -j8 install. 新建 ...

  6. loadrunner添加/清除 cookies

    web_add_cookie("reloadCount=1;domain={Host}"); 清除 cookies web_cleanup_cookies():

  7. 修改linux服务器时间

    date -s "20220104 11:07:05" &&hwclock --systohc

  8. 学习记录--C++继承与派生编程题

    1.设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生出来的 要求输出一个圆桌的高度,面积与颜色等. #include<iostream&g ...

  9. SpringBoot——常用配置

    application.yml配置信息 spring: profiles: active: dev application: name: jwt-token-security # Jackson 配置 ...

  10. 初认Spring

    官网地址:https://spring.io/ Spring Framework的系统架构 1.Core Contiainer:核心容器 2.AOP:面向切片编程 3.Aspects:AOP思想实现 ...