Table of Contents
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Note: 如果觉得Github的Wiki访问太慢,可以访问 Gitee 镜像。
SRS Overview
SRS是一个简单高效的实时视频服务器,支持RTMP/HLS/HTTP-FLV。
对于新手来说,音视频的门槛真的非常高,SRS的目标是降低(不能消除)音视频的门槛,所以请一定要读完Wiki。 不读Wiki一定扑街,不读文档请不要提Issue,不读文档请不要提问题,任何文档中明确说过的疑问都不会解答。
Note: 如果觉得Github的Wiki访问太慢,可以访问 Gitee 镜像。
Getting Started
下载源码,推荐用CentOS7系统:
git clone -b 3.0release https://gitee.com/ossrs/srs.git
编译,注意需要切换到srs/trunk目录:
cd srs/trunk
./configure
make
启动服务器:
./objs/srs -c conf/srs.conf
检查SRS是否成功启动,可以打开 http://localhost:8080/ ,或者执行命令:
# 查看SRS的状态
./etc/init.d/srs status
# 或者看SRS的日志
tail -f ./objs/srs.log
例如,下面的命令显示SRS正在运行:
MB0:trunk $ ./etc/init.d/srs status
SRS(pid 24303) is running. [ OK ]
MB0:trunk $ tail -f ./objs/srs.log
[2021-08-13 03:02:16.241][Trace][24303][332] HTTP-Server listen at tcp://0.0.0.0:8080, fd=10
ffmpeg -re -i ./doc/source.flv -c copy -f flv -y rtmp://localhost/live/livestream
打开下面的页面播放流(若SRS不在本机,请将localhost更换成服务器IP):
- RTMP (by VLC): rtmp://localhost/live/livestream
- H5(HTTP-FLV): http://localhost:8080/live/livestream.flv
- H5(HLS): http://localhost:8080/live/livestream.m3u8
请继续阅读下面的内容,了解更多SRS的信息。
Docker
推荐使用Docker直接启动SRS,可用镜像在 这里 :
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
ossrs/srs:3 ./objs/srs -c conf/srs.conf
请继续阅读下面的内容,了解更多SRS的信息。
Effective SRS
SRS是一个服务器,也可以扩展成集群,还涉及多种协议和场景。下图是SRS的概览大地图,先有个大概印象:
Note: 高清图请看 https://www.processon.com/view/link/619f24137d9c083e98adab49
Note: 别被这张图吓到,一般也用不到所有的能力,关键是要花时间看文档,了解这些部分怎么工作的。
我们从几个典型的应用场景来说下上面的大图,更多场景请看Applications:
- 入门搭建环境,惊鸿一瞥。如果想感觉下SRS能做什么用,可以直接根据 Usage 操作,仅仅需要两个命令三个步骤就能跑起来。这个场景下用到了Encoders(FFmpeg)推流,SRS(Origin)源站接收流,Players(H5)播放流。
- 全平台直播,小荷才露尖尖角。只需要上图的Encoders(FFmpeg/OBS)推送RTMP到SRS;一台SRS Origin(不需要Cluster),转封装成HTTP-FLV流、转封装成HLS;Players根据平台的播放器可以选HTTP-FLV或HLS流播放。
- 大规模业务,带你装逼带你飞。如果业务快速上涨,可以通过Edge Cluster支持海量Players,或者Origin Cluster支持海量Encoders,当然可以直接平滑迁移到视频云。
Note: 这些场景的K8S部署,请参考Edge Cluster和Origin Cluster。
每个场景可能会用到一些通用的能力,比如:
- 一般都需要录制成FLV/MP4,将RTMP流转码,流截图。
- 也需要和现有业务系统集成,比如HTTP回调,或者通过HTTP API接口查询流和客户端的信息。
- 使用FFmpeg主动拉取流到SRS,或者Forward处理流后转给其他服务,或者推送RTSP/UDP/FLV到SRS。
- 安全方面,使用安全策略Security设置访问,或者用HTTP API接口踢流。
- 使用VHOST虚拟服务器 隔离不同的业务,用域名作为调度单元,应用不同的配置。
如果你更喜欢看视频,可以移步看下面的视频专栏介绍,最后还是要墙裂劝说看一遍Wiki:
再啰嗦一遍:不读Wiki一定扑街,不读文档请不要提Issue,不读文档请不要提问题,任何文档中明确说过的疑问都不会解答。
Video Guides:
- 公众号专栏:SRS,知识库,重要功能和阶段性结果,解决方案和DEMO
- 公众号专栏:深度,底层技术分析,服务器模型,协议处理,性能优化等
- 公众号专栏:动态,关于最新的会议和动态,新闻,社区等
- B站专栏(视频):SRS开源服务器
- 零声学院(视频):SRS流媒体服务器实战
Solution Guides:
- 音视频开发为什么要学SRS流媒体服务器
- 最佳实践:如何扩展你的SRS并发能力?
- SRS是单进程模型,不支持多进程;可以使用集群 或者ReusePort扩展多进程(多核)能力。
- 基于HLS-TS&RTMP-FLV的微信小程序点直播方案
- 借力SRS落地实际业务的几个关键事项
- 干货 | 基于SRS直播平台的监控系统之实现思路与过程
- Android直播实现
- SRS直播服务器与APP用户服务器的交互
- 使用flvjs实现摄像头flv流低延时实时直播
- IOS 直播方面探索(服务器搭建,推流,拉流)
- WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba
Deployment Guides:
- Delivery RTMP: 如何部署SRS提供RTMP服务。
- Delivery HLS: 如何部署SRS提供RTMP和HLS服务。
- Delivery HTTP FLV: 如何部署SRS分发FLV流。
- Delivery HDS: 如何部署SRS分发HDS流。
- Delivery DASH: 如何部署SRS分发DASH流。
- Transcode: 如何部署SRS对直播流转码。
- Snapshot: 如何对直播流截图。
- Forward: 如何部署SRS转发RTMP流到其他服务器。
- Low latency: 如何部署SRS为低延迟模式。
- Ingest: 如何将其他流拉到SRS作为RTMP流。
- HTTP Server: 如何部署SRS为HTTP服务器。
- SRS DEMO: 如何启动SRS的DEMO。
- Projects: 都有谁在使用SRS。
- Setup: SRS安装和部署摘要。
Cluster Guides:
- Origin Cluster: 如何支持源站集群,扩展源站能力。
- Edge Cluster: RTMP: 如何部署RTMP分发集群,譬如CDN支持RTMP分发。
- Edge Cluster: FLV: 如何部署HTTP-FLV分发集群,譬如CDN支持HTTP-FLV分发。
- VHOST: 如何一个集群支持多个用户,即Vhost。
- Reload: 如何不中断服务的前提下应用新的配置,即Reload。
- Tracable Log: 如何在集群中追溯错误和日志,基于连接的日志,排错日志。
- Log Rotate: 如何切割服务器的日志,然后压缩或者清理。
Integration Guides:
- Linux Service: 启动或停止服务。
- HTTP Callback: 使用HTTP回调侦听SRS的事件。
- HTTP API: 使用SRS的HTTP API获取数据。
- RTMP Bandwidth: 使用SRS测速接口获取带宽数据。
- Special Control: 一些特殊的控制配置。
Migrate From NGINX-RTMP:
- NG EXEC: 为特殊的事件执行外部程序,譬如exec_publish,当发布流时exec外部程序。
User Guides:
- Quick Start: 使用SRS的主要功能的快速手册。您应该从这个文章入手。
- Milestones: SRS的路线图和产品计划。
- Why SRS: 为何选择SRS?SRS的路线图?
- GIT Mirrors: SRS在各个主要GIT站点的镜像,代码都是保持同步的。
- Main Features: SRS的功能列表。请注意有些功能只有特定的版本才有。请注意有些功能是实验性的。
- Releases: SRS目前已经发布的版本。
- Docs: SRS的详细文档。
- Compare: SRS和其他服务器的对比。
- Performance: SRS的性能测试报告。
Join Us:
- 如何向SRS提交ISSUE?
- File Issue: 提交需求、Bug和反馈。
- Contact: 用钉钉、微信、邮箱联系我们。
Develop Guide
- SRS代码分析,分析SRS结构和代码逻辑。
- SRS Librtmp: 使用SRS提供的librtmp客户端库,C++代码,可以在Android和iOS上编译,基于RTMP协议推送和拉取流。
- Third-party Client SDK: 第三方厂商提供的客户端推流和播放的SDK,一般是移动端包括Andoird和iOS。
Questions or need help?
其他联系方式,参考联系我们
Winlin 2015.7
Welcome to SRS wiki!
SRS 5.0 wiki
Please select your language:
SRS 4.0 wiki
Please select your language:
SRS 3.0 wiki
Please select your language:
SRS 2.0 wiki
Please select your language:
SRS 1.0 wiki
Please select your language:

