1. RTMP协议概述
RTMP(Real-Time Messaging Protocol)是一种用于在互联网上传输音频、视频和数据的通信协议。最初由Macromedia开发为专有协议,用于Flash Player和Flash Communication Server之间的流媒体传输。Adobe收购Macromedia后,公开了该协议的部分规范。
RTMP协议的主要特点包括:
- 基于TCP协议,默认使用1935端口
- 支持低延迟通信(通常在1-3秒)
- 采用分块传输机制,可动态调整数据块大小
- 支持多路复用,可在单一连接上传输多个数据流
在实际应用中,RTMP最常见的用途是视频直播推流和点播。比如当你在视频网站观看直播时,主播端通常就是通过RTMP协议将视频流推送到服务器,再由服务器分发给观众。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RTMP协议变体
RTMP协议发展出了多个变体,适用于不同的网络环境:
2.1 基础RTMP
标准的RTMP协议,直接运行在TCP之上,使用1935端口。这是最基本的实现形式,但不加密,安全性较低。
2.2 RTMPS
RTMP over TLS/SSL,通过加密连接传输数据,提高了安全性。适用于对传输安全有要求的场景。
2.3 RTMPE
使用Adobe专有加密机制的RTMP。虽然加密细节不公开,但采用了行业标准的加密原语。常见于需要内容保护的商业流媒体平台。
2.4 RTMPT
通过HTTP隧道传输的RTMP,通常使用80或443端口。这种设计可以穿透大多数企业防火墙,因为HTTP流量通常不会被拦截。
2.5 RTMFP
基于UDP而非TCP的RTMP变体,支持P2P直接通信。相比TCP版本,RTMFP在丢包率较高的网络环境下表现更好。
3. RTMP协议工作原理
3.1 连接建立过程
RTMP通信始于一个三次握手过程:
- 客户端发送C0包(协议版本号,通常为0x03)
- 立即发送C1包(1536字节,包含时间戳和随机数据)
- 服务器响应S0和S1包
- 客户端发送C2包(回显S1)
- 服务器发送S2包(回显C1)
握手完成后,客户端会发送连接命令(connect),包含应用名称、Flash版本等信息。服务器响应确认连接成功,并分配一个唯一的客
