SRS 入门:整体概念与框架
对应视频:
135--01-SRS流媒体服务器开发概述.mp4136--02-SRS流媒体框架入门.mp4这篇先建立大图景:SRS 是什么、它在推流/拉流链路里站在哪里、源码框架从哪里进入。
1. SRS 是什么
SRS 是一个流媒体服务器。你可以先把它理解成“音视频中转站”:
推流端 -> SRS -> 拉流端
推流端可能是 OBS、FFmpeg、摄像头、编码器或业务程序;拉流端可能是播放器、浏览器、移动端 App 或另一个服务。
SRS 收到一路流后,可以用不同协议对外分发,例如:
- RTMP:常用于推流,也可以拉流。
- HTTP-FLV:浏览器或播放器通过 HTTP 拉 FLV。
- HLS:切片播放,延迟通常比 RTMP/HTTP-FLV 高。
- WebRTC:低延迟互动场景。

2. 新手先分清几个词
推流
推流就是把音视频数据发送到服务器。
OBS/FFmpeg/摄像头 -> SRS
常见 RTMP 推流 URL:
rtmp://server-ip/live/livestream
拉流
拉流就是客户端从服务器取音视频数据播放。
播放器/浏览器 -> SRS
常见 URL:
rtmp://server-ip/live/livestream
http://server-ip:8080/live/livestream.flv
流名和 App
以 rtmp://server-ip/live/livestream 为例:
| 部分 | 含义 |
|---|---|
live | app,也可以理解为业务分类 |
livestream | stream,也就是具体流名 |
SRS 内部经常会按 vhost/app/stream 管理一路流。
3. SRS 启动后做什么
SRS 启动后会读取配置、初始化模块、监听端口,然后等待客户端连接。
典型流程:
main
读取配置文件
初始化日志、统计、网络
启动监听器
等待 TCP 连接
为每个连接创建 connection 对象
进入对应协议处理流程

启动日志里可以重点看:
- 配置文件是否加载成功。
- RTMP 端口是否监听成功,默认常见是
1935。 - HTTP API / HTTP Server / HTTP-FLV 是否启用。
- 是否有
bind、listen、permission、address already in use之类错误。
4. 源码入口怎么读
刚入门不要一上来追所有文件。可以按“连接进入服务器”的路径读。
main
-> server 初始化
-> listener 监听端口
-> accept 新连接
-> 创建 SrsRtmpConn / HTTP conn
-> do_cycle 处理连接生命周期

课程中出现的常见类可以先这样理解:
| 名称 | 入门理解 |
|---|---|
SrsServer | 服务器总管,负责启动、监听、管理连接 |
SrsListener | 监听端口,收到新连接 |
SrsConnection | 一个客户端连接的抽象 |
SrsRtmpConn | RTMP 客户端连接 |
SrsHttpConn | HTTP 客户端连接 |
SrsSource | 一路媒体源,推流和拉流会围绕它交互 |
SrsConsumer | 拉流消费者,从 SrsSource 取数据 |
5. 主流程图
课程里反复围绕主流程展开:SRS 不是一次性处理完请求就退出,而是一个长期运行的服务进程。

你可以先记住这个简化版:
启动服务
监听端口
来了一个连接
判断是什么协议
进入 RTMP 或 HTTP 处理
连接断开后回收资源
6. Listener 和 Connection
Listener 的职责是“等人敲门”。客户端连上来后,SRS 会创建对应连接对象,再把真正的业务逻辑交给 connection 处理。

入门时可以把它想成:
Listener:
只负责 accept TCP 连接
Connection:
负责这个连接后续的协议交互
这样读源码会轻松很多,因为监听端口和处理 RTMP 协议是两件事。
7. 连接生命周期
一个 RTMP 连接大致经历:
TCP 连接建立
RTMP handshake
connect 命令
createStream
publish 或 play
循环处理音视频消息
连接断开
资源清理

8. 协程/线程的入门理解
课程里会看到线程、协程、循环等待等概念。先不用陷进实现细节,可以这样理解:
- SRS 是网络服务器,会同时服务多个客户端。
- 每个连接都需要独立处理收包、发包、超时、断开。
- 如果完全一个连接阻塞整个进程,服务器就无法服务多人。
- SRS 使用自己的并发模型让多个连接能同时推进。

9. 入门阅读顺序
建议按这个顺序看源码和视频:
1. SRS 怎么启动
2. RTMP 端口怎么监听
3. 客户端连接后创建什么对象
4. RTMP handshake 怎么做
5. connect / publish / play 命令怎么处理
6. 推流数据进入 SrsSource
7. 拉流客户端从 SrsSource 消费数据
8. HTTP-FLV 怎么复用这一路媒体源
这条线抓住了,后面看 RTMP 协议、推流、拉流、HTTP-FLV 就不会散。
评论
...正在读取评论。