RTSP Server(LIVE555)源码分析(五)-PLAY信令

主要分析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(...),和视频类似,暂不做详细分析;  

posted @ 2023-02-13 16:22  奔涌吧,后浪  阅读(187)  评论(0编辑  收藏  举报