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

浙公网安备 33010602011771号