RTSP/RTMP交互流程 📅 2026/7/8 11:29:06 RTSP交互流程一、核心结论所有 RTSP 指令全部由客户端如VLC播放器主动向摄像头发起摄像头只被动应答不会主动发任何命令这就是典型的拉流。RTSP 只做控制命令视频画面由独立的 RTP 报文传输控制通道是 TCP 554视频默认走 UDP 端口。二、完整标准交互流程标准 5 步角色客户端VLC服务端RTSP 摄像头步骤 1OPTIONS能力查询客户端主动发起VLC询问摄像头支持哪些 RTSP 指令。 摄像头返回支持DESCRIBE、SETUP、PLAY、TEARDOWN。步骤 2DESCRIBE获取媒体信息客户端主动发起VLC请求视频流参数。 摄像头返回 SDP 信息编码 H.264/H.265、音频、RTP 端口信息。步骤 3SETUP建立数据通道客户端主动发起VLC告诉摄像头 “我本机用哪个 UDP 端口接收视频”。 摄像头记录你的 IP 接收端口生成唯一会话 ID此时还不发送画面。步骤 4PLAY正式开始传输画面客户端主动发起VLC发送 PLAY 指令携带会话 ID。 摄像头收到命令后立刻持续向外发送 RTP 视频数据包网线上开始产生图像流量VLC 开始出画面。前 4 步走完拉流成功。步骤 5TEARDOWN关闭会话正常退出时客户端主动发起正常关闭 VLCVLC 发送拆除命令。 摄像头收到后立即停止发送 RTP 视频数据网线中的图像流量直接中断。三、异常断连场景强制关闭 VLCVLC 被强行结束进程无法发出 TEARDOWN。RTSP 控制 TCP 连接断开摄像头无法实时感知 UDP 客户端离线会继续向旧端口发送视频包等待会话超时默认 30~60 秒摄像头自动销毁会话停止推流。四、补充TCP 内嵌 RTPInterleaved 模式当 UDP 被防火墙拦截时VLC 会自动切换模式 把 RTP 视频数据封装进 RTSP 的 TCP 554 通道里一起传输。信令交互流程完全不变依旧是 VLC 全程主动下发指令。一句话总结 从头到尾都是播放器发号施令摄像头只负责 “收到命令再发画面”无指令就静默等待。RTMP交互流程在电脑上启动一个RTMP服务器本质上是一个TCP服务器端口为1953。整条 RTMP 完整交互两条独立 TCP 连接整个业务包含两条完全独立的 TCP 链路链路 1RTMP 摄像头推流发布端 Publisher→ RTMP 服务器链路 2VLC 播放器观看订阅端 Subscriber→ RTMP 服务器服务器永远只被动监听 1935 端口不会主动发起任何连接 摄像头、VLC 全都是主动发起连接的 TCP 客户端。前置通用步骤两条链路都要先走这两步步骤 0TCP 底层连接客户端摄像头 / VLC主动发起 TCP 三次握手连上服务器 1935 端口。步骤 1RTMP 协议握手二进制握手和业务无关客户端 → 服务器C0 C1协议版本 随机校验数据服务器 → 客户端S0 S1 S2客户端 → 服务器C2 握手完成正式开始发送 AMF 控制命令。第一链路RTMP 摄像头视频源头发给服务器连续 4 条业务指令AMF0 命令connect接入应用摄像头发起命令我要接入服务里的live应用。 服务器应答连接成功。createStream创建逻辑流通道摄像头申请开辟一条流媒体通道。 服务器返回一个流 ID。publish核心推流指令指令内容我要发布一条直播流流名称 drone01类型为实时直播。 服务器收到这条命令后做好接收视频的准备。持续不断发送封装好的 H.264 视频 AAC 音频数据包。总结摄像头行为 connect → createStream →publish→ 上传音视频第二链路VLC 播放器拉取视频全新独立 TCP 连接VLC 重新建立一条全新 TCP和摄像头的连接互不干扰。 同样先完成 TCP 握手 RTMP 握手再执行下面命令connect接入同一个 live 应用VLC 请求接入live。服务器返回成功。createStream创建播放通道申请流通道拿到流 ID。Play核心拉流指令VLC 发送命令我要订阅流名称drone01。 服务器立刻把摄像头上传的视频转发给 VLC。VLC 持续接收数据包解码出画面。总结 VLC 行为 connect → createStream →Play→ 接收音视频关键区别一句话发视频的摄像头调用 Publish 命令发布流看视频的 VLC调用 Play 命令订阅流两条 TCP 相互独立关闭 VLC摄像头依然会继续向服务器推流不会中断。整体时序图简化plaintext【摄像头客户端】 【RTMP服务器】 TCP连接 RTMP握手 connect ---------------------- 应答OK createStream ------------------ 返回通道ID publish(drone01) -------------- 就绪 源源不断推送视频数据包 【VLC客户端】另一条新TCP TCP连接 RTMP握手 connect ---------------------- 应答OK createStream ------------------ 返回通道ID play(drone01) ---------------- 开始转发摄像头的视频流给VLC补充对比 RTSP彻底分清模型RTSP一整条连接VLC 发 PLAY 去拉摄像头摄像头是服务端。RTMP两条独立连接发布端发 Publish播放端发 Play只有中间一台服务器。RTMP推流地址和播放地址是同一个。例如RTMP摄像头推送地址为rtmp://192.168.0.10/live/drone可以把图像送到服务器。观众也可以使用此地址观看视频