-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
v3_CN_Home
SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。
SRS的目标是降低音视频的门槛,是降低而无法消除,因为对于新手来说,音视频的门槛真的非常高,所以请一定要读完Wiki。 不读Wiki一定扑街,不读文档请不要提Issue,不读文档请不要提问题,任何文档中明确说过的疑问都不会解答。
Note: 如果觉得Github的Wiki访问太慢,可以访问 Gitee 镜像。
SRS是一个服务器,也可以扩展成集群,还涉及多种协议和场景。下图是SRS的概览大地图,先有个大概印象:
Note: 高清图请看 https://www.processon.com/view/link/5e3f5581e4b0a3daae80ecef
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,不读文档请不要提问题,任何文档中明确说过的疑问都不会解答。
墙又裂了建议用 srs-docker 直接运行SRS,每个Release的版本都会有Docker镜像, 还有海外镜像 或 国内镜像 , 能避免各种的坑,即使是开发也可以用 srs-docker/dev 开发镜像。
如果坚持要用安装包,也提供Release版本的安装包下载,请访问ossrs.net。非发布版本,则需要自己编译SRS,请参考编译SRS。
SRS主要运行在Linux系统上,譬如Centos和Ubuntu,包括x86、x86-64、ARM和MIPS。 其他的OS可以使用srs-docker开发和运行, 比如macOS、Windows等。SRS的系统偏好主要是由于state-threads导致的,它极大的简化了服务器在复杂协议的处理。
SRS是单进程模型,不支持多进程;可以使用集群 或者ReusePort扩展多进程(多核)能力。
Video Guides:
- 公众号专栏:SRS,知识库,重要功能和阶段性结果,解决方案和DEMO
- 公众号专栏:深度,底层技术分析,服务器模型,协议处理,性能优化等
- 公众号专栏:动态,关于最新的会议和动态,新闻,社区等
- B站专栏(视频):SRS开源服务器
- 零声学院(视频):SRS流媒体服务器实战
Solution Guides:
- 音视频开发为什么要学SRS流媒体服务器
- 最佳实践:如何扩展你的SRS并发能力?
- 基于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。
其他联系方式,参考联系我们
Winlin 2015.7
Welcome to SRS wiki!
Please select your language:
Please select your language:
Please select your language:
Please select your language:
Please select your language: