Live555的RTP数据流建立流程图

这是Live555在RTSP服务端建立后,对客户端发送PLAY请求之后,服务端与客户端建立RTP连接后开始传输视频流的一个流程图。



live555在接收到客户端的play命令后,开始媒体流数据传输。它的数据打包过程还是比较复杂的。上图是所涉及到函数之间的调用关系。
RTP Server 接收到客户端命令 play后调用的函数是 handleCmd_Play 。在该函数中会调用 void StreamState ::startPlaying函数,然后进入Boolean MediaSink::startPlaying()函数。
之后进入Boolean MultiFramedRTPSink::continuePlaying() 函数,该函数里面只调用了buildAndSendPacket 一个函数。接下来就会进入到重要的打包和发送函数了。
下面进入的是填充RTP包的数据段,看下面函数,RTP数据打包和发送的关键和核心就是在该函数中处理的。

afterGettingFrame1 中,会一直填充RTP数据包,以帧为单位向其中填充,判断是否填满,不满则继续取帧数据,直到填满为止,然后发送。发送后等待uSecondsToGo的时间后,继续进行下一次打包。这样就形成了一个无限循环,直到没有数据(文件结束)为止。


猜你喜欢

转载自blog.csdn.net/lasuerte/article/details/80929769