强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

RTMP 协议精讲

RTMP 协议精讲

Real-Time Messaging Protocol — 实时消息传输协议

RTMP 是由 Adobe(原 Macromedia)开发的用于在 Flash 平台与流媒体服务器之间传输音视频及数据的 TCP 协议。尽管 Flash 已退出历史舞台,但 RTMP 凭借其低延迟、成熟的生态和广泛的支持,依然是当前 推流端(Encoder → Server)的事实标准。

本教程共 12 章,从协议原理到生产部署,系统性地讲解 RTMP 技术栈。


目录导航

章节文件主题关键词
01RTMP 协议概述Adobe 历史、与 HLS/DASH 对比、适用场景协议对比、场景选型
02握手过程C0C1C2/S0S1S2、版本协商、加密握手Handshake、RTMPE
03块流机制块格式、块头、消息拆分、最大块长Chunk、Message Splitting
04消息格式消息类型、音视频消息、控制消息Message Type、Protocol Control
05AMF 编码与命令AMF0/AMF3、命令消息、远程过程调用AMF、RPC、connect/play
06流操作createStream、play、publish、pause、seekStream Lifecycle
07视频编解码H.264/H.265、FLV 封装、关键帧AVC/HEVC、NALU、FLV Tag
08音频编解码AAC/MP3、音频头、采样率、声道Audio Codec、ADTS
09流媒体服务器SRS、Nginx-RTMP、配置、集群Server、Origin/Edge
10流中转与分发边缘节点、CDN、转码、录制Relay、CDN、Transcode
11Docker 部署SRS 容器化、Compose、流媒体架构Docker、Compose
12最佳实践低延迟优化、安全、监控、生产部署Latency、Security、Gop-Cache

学习路线建议

┌─────────────────────────────────────────────────────────┐
│                    RTMP 精讲学习路线                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  第一阶段:协议基础(必须)                               │
│  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐          │
│  │ 01  │→ │ 02  │→ │ 03  │→ │ 04  │→ │ 05  │          │
│  │概述 │  │握手 │  │块流 │  │消息 │  │AMF  │          │
│  └─────┘  └─────┘  └─────┘  └─────┘  └─────┘          │
│                                                         │
│  第二阶段:媒体与流操作(核心)                           │
│  ┌─────┐  ┌─────┐  ┌─────┐                            │
│  │ 06  │→ │ 07  │→ │ 08  │                            │
│  │流操作│  │视频 │  │音频 │                            │
│  └─────┘  └─────┘  └─────┘                            │
│                                                         │
│  第三阶段:工程实践(实战)                               │
│  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐                  │
│  │ 09  │→ │ 10  │→ │ 11  │→ │ 12  │                  │
│  │服务器│  │中转 │  │Docker│  │最佳 │                  │
│  └─────┘  └─────┘  └─────┘  └─────┘                  │
│                                                         │
└─────────────────────────────────────────────────────────┘

环境准备

在开始学习之前,请准备以下环境:

必备工具

工具用途安装方式
FFmpeg推流/拉流测试apt install ffmpegbrew install ffmpeg
Wireshark抓包分析 RTMP 数据apt install wireshark
librtmpRTMP 库/命令行工具apt install librtmp-utils
SRS开源流媒体服务器github.com/ossrs/srs
Docker容器化部署docs.docker.com

快速验证

# 启动 SRS 开发服务器
docker run --rm -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    ossrs/srs:5

# 推送测试流
ffmpeg -re -i input.mp4 -c copy -f flv \
    rtmp://localhost:1935/live/test

# 播放测试流
ffplay rtmp://localhost:1935/live/test

参考资料