1.ZLMediaKit 服务器源码解读---RTSP推流拉流
ZLMediaKit 服务器源码解读---RTSP推流拉流
RTSP推流与拉流在ZLMediaKit服务器源码中有着清晰的码分解析过程和处理逻辑。数据解析通过回调到达RtspSession类的码分onRecv函数,进而进行分包处理,码分头部数据与内容分离。码分根据头部信息判断数据包类型,码分网狐经典版内核源码rtp包与rtsp包分别由onRtpPacket和onWholeRtspPacket函数处理。码分cdb添加源码
RTSP处理过程中,码分解析出的码分交互命令被分发至不同的处理函数。对于rtp包处理,码分数据封装成rtp包后,码分执行onBeforeRtpSorted函数进行排序,码分排序后的码分数据放入缓存map,最终回调到RtspSession的码分10110110的源码onRtpSorted函数。这里,码分回调数据进入RtspMediaSourceImp成员变量,码分该变量指向RtspDemuxer解复用器,用于H等视频格式的820频率源码解复用。
在H解复用器中,rtp包经过一系列处理后,由HRtpDecoder类的decodeRtp函数转化为H帧数据,最终通过RtpCodec::inputFrame函数分发至代理类。拷贝app源码代理类在处理H帧数据时,分包并添加必要参数(如pps、sps信息),然后通过map对象将数据传递给多个接收者。
处理完H帧后,数据将流转至编码阶段。在RtspMediaSourceImp中,H帧数据被传递至MultiMediaSourceMuxer编码类。在编码过程中,数据通过RtspMuxer的inputFrame接口进入编码器HRtpEncoder,最后被打包成rtp包,准备分发。
总结而言,RTSP推流过程主要包含数据解析、视频解复用与编码三个关键步骤。在拉流阶段,通过鉴权成功后获取推流媒体源,利用play reader从缓存中取出rtp包并发送给客户端。