RTSP协议推流流程详细拆解

张开发
2026/6/9 22:14:06 15 分钟阅读
RTSP协议推流流程详细拆解
RTSP协议专门用于安防等领域通过RTCP应用层协议控制传输状态以及丢包反馈基于RTP格式封装使用UDP或TCP协议传输。RTSP推流流程Connect连接根据底层传输协议连接指定IP地址加端口通过TCP协议传输时要进行三次握手且连接端口一般为554通过UDP协议传输时直接向指定IP地址加端口进行传输数据客户端向服务器端发送OPTION询问服务器支持拉流还是推流、服务端会返回一个ANNOUNCE支持推流、客户端ANNOUNCE携带SDP告知服务端编码格式和详细参数、客户端SETUP协商传输通道RTP占用端口和RTCP占用端口、客户端发送RECORD字段开始推流、客户端发送RTP包传输数据、最后客户端发送TEERDOWN进行退出连接、关闭对话采集音视频流从本地文件或者摄像头进行读取音视频流数据。编码通过avcodec_find_by_name查找相应编码器创建编码器上下文、avcodec_open2打开编码器码器RTP协议封装以H.264格式为例封装编码后的avpacket成RTP包格式。RTP格式有RTP Header和RTP Payload封装时会将NALU放进RTP Payload中。MTU大小为1500字节当RTP Payload大小大于MTU时RTP Payload会进行FU分片处理。FU分片结构是FU Header加FU Payload当同一帧NALU装不下时分成一个RTP Payload➕多个FU Payload进行分开发送到流媒体服务器进行推流但它们的RTP Header中的ID标识SSRC同步源标识符会是一致的。另外就是这里的NALU通常为AnnexB格式不加start code只传输NALU的原始数据目的降低延迟以及减少带宽消耗提升传输效率RTSP协议推流最后通过Socket套接字UDP或TCP进行将数据包发送出去SDP内容分析SDP的m字段字段用来描述媒体信息、端口和协议SDP的a字段字段用来具体描述编解码参数和图像帧参数。需要注意的是afmtp其中SPS和PPS非常关键是初始化解码器的关键数据

更多文章