SRS 简介
SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS, 包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。 SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、流截图、 转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、 转封装成HDS、支持SRT流、录制成FLV/MP4。SRS包含支持大规模集群如CDN业务的关键特性, 譬如RTMP多级集群、源站集群、VHOST虚拟服务器 、 无中断服务Reload、HTTP-FLV集群。此外,SRS还提供丰富的应用接口, 包括HTTP回调、安全策略Security、HTTP API接口、 RTMP测速。SRS在源站和CDN集群中都得到了广泛的应用Applications。
Note: 高清图请看 https://www.processon.com/view/link/5e3f5581e4b0a3daae80ecef
Note: K8S部署实例参考Edge Cluster和Origin Cluster。
Downloading
推荐使用srs-docker部署和启动SRS, 当然,SRS也提供安装包下载,请访问ossrs.net。 若您需要自己编译SRS,请参考编译SRS。
SRS主要运行在Linux系统上,譬如Centos和Ubuntu,包括x86、x86-64、ARM和MIPS。 其他的OS可以使用srs-docker开发和运行,比如macOS、Windows等。 SRS的系统偏好主要是由于state-threads导致的,它极大的简化了服务器在复杂协议的处理。
SRS可以在一台服务器上运行集群,或者在多台服务器上也可以运行集群。SRS是单进程模型,不支持多进程;您可以使用go-oryx支持多进程。
Where to Go from Here
Video Guides:
- 开源服务器眼花缭乱,差别在哪里?。
- SRS官方App上线,全链路直播开发必备利器。
- HTTPS直播实战,搞定HTTPS-HLS和HTTPS-FLV,还有WebRTC推流。
- Bilibili视频: SRS介绍,背景、思路和发展计划。
- Bilibili视频: 运行环境,先把SRS跑起来。
- Bilibili视频:开发和调试,选择IDE和开发调试环境。
- Bilibili视频:配置和热加载,配置文件和Reload。
- Bilibili视频:日志和错误,排查问题和筛选日志。
- Bilibili视频:支持WebRTC,如何支持WebRTC播放。
- Bilibili视频:一码十多行(抖版),快速码代码的一个技巧。
- Bilibili视频:高效理解代码,磨刀不误砍柴工。
- Bilibili视频:雕刻时光,核心时钟和时间处理。
- Bilibili视频:一剪定乾坤,重构提升质量,高效编程习惯。
Solution Guides:
- 国产开源流媒体SRS4.0对视频监控GB28181的支持
- 基于HLS-TS&RTMP-FLV的微信小程序点直播方案
- 借力SRS落地实际业务的几个关键事项
- 干货 | 基于SRS直播平台的监控系统之实现思路与过程
- Android直播实现
- SRS直播服务器与APP用户服务器的交互
- 使用flvjs实现摄像头flv流低延时实时直播
- IOS 直播方面探索(服务器搭建,推流,拉流)
- 最佳实践:如何扩展你的SRS并发能力?
- 当SRS遇到K8s:快速构建高并发直播集群
Deployment Guides:
- Delivery RTMP: 如何部署SRS提供RTMP服务。
- Delivery HLS: 如何部署SRS提供RTMP和HLS服务。
- Delivery HTTP FLV: 如何部署SRS分发FLV流。
- Delivery HDS: 如何部署SRS分发HDS流。
- Delivery DASH: 如何部署SRS分发DASH流。
- Transmux SRT: 如何部署SRS支持SRT流。
- Transcode: 如何部署SRS对直播流转码。
- Snapshot: 如何对直播流截图。
- Forward: 如何部署SRS转发RTMP流到其他服务器。
- Low latency: 如何部署SRS为低延迟模式。
- Ingest: 如何将其他流拉到SRS作为RTMP流。
- HTTP Server: 如何部署SRS为HTTP服务器。
- SRS DEMO: 如何启动SRS的DEMO。
- Projects: 都有谁在使用SRS。
- Setup: SRS安装和部署摘要。
- WebRTC Play: SRS支持WebRTC播放流。
- GB28181 Publish: SRS支持GB28181推流。
- SRT Publish: SRS支持SRT推流。
- HEVC/H.265: SRS支持H.265编码格式。
Cluster Guides:
- K8s: 如何使用ACK(阿里云容器服务Kubernetes版)部署SRS集群。
- 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:
- 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依赖的库ST的关键技术。
- 高性能网络服务器设计,分析高性能网络服务器的设计要点。
- SRS Librtmp: 使用SRS提供的librtmp客户端库,C++代码,可以在Android和iOS上编译,基于RTMP协议推送和拉取流。
- Third-party Client SDK: 第三方厂商提供的客户端推流和播放的SDK,一般是移动端包括Andoird和iOS。