Skip to content

v4_CN_Home

Winlin edited this page May 12, 2022 · 130 revisions

HOME > CN

Note: 如果觉得Github的Wiki访问太慢,可以访问 Gitee 镜像。

注意:SRS4属于开发版,不稳定。

SRS Overview

SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。

SRS Overview

Note: 简单的单节点架构,适用于大多数场景,大图请看figma

SRS Overview

Note: 这是典型的源站和边缘集群的架构,适用于需要高并发的场景,高清大图请参考这里

对于新手来说,音视频的门槛真的非常高,SRS的目标是降低(不能消除)音视频的门槛,所以请一定要读完Wiki。 不读Wiki一定扑街,不读文档请不要提Issue,不读文档请不要提问题,任何文档中明确说过的疑问都不会解答。

Getting Started

SRS支持下面多种方式启动,请使用你最熟悉的方式。

Build From Source

下载源码,推荐用CentOS7系统:

git clone -b 4.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 -n 30 -f ./objs/srs.log

例如,下面的命令显示SRS正在运行:

MB0:trunk $ ./etc/init.d/srs status
SRS(pid 90408) is running.                                 [  OK  ]

MB0:trunk $ tail -n 30 -f ./objs/srs.log
[2021-08-13 10:30:36.634][Trace][90408][12c97232] Hybrid cpu=0.00%,0MB, cid=1,1, timer=61,0,0, clock=0,22,25,0,0,0,0,1,0

使用 FFmpeg(点击下载)OBS(点击下载) 推流:

ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream

或者使用FFmpeg的Docker推流,请将192.168.1.10换成你的内网IP:

docker run --rm registry.cn-hangzhou.aliyuncs.com/ossrs/srs:encoder \
  ffmpeg -re -i ./doc/source.200kbps.768x320.flv -c copy -f flv rtmp://192.168.1.10/live/livestream

打开下面的页面播放流(若SRS不在本机,请将localhost更换成服务器IP):

注意如果RTMP转WebRTC流播放,必须使用配置文件rtmp2rtc.conf:

Note: 推荐直接运行SRS,可以使用 docker, 或者 K8s

Note: 若需要开启WebRTC能力,请将CANDIDATE设置为服务器的外网地址,详细请阅读WebRTC: CANDIDATE

Note: 若需要HTTPS,比如WebRTC和浏览器都要求是HTTPS,那么请参考 HTTPS API 以及 HTTPS Callback 以及 HTTPS Live Streaming, 当然了HTTPS的反向代理也能和SRS工作很好,比如Nginx代理到SRS。

请继续阅读下面的内容,了解更多SRS的信息。

Docker

推荐使用Docker直接启动SRS,可用镜像在这里和每个Release都会给出来链接:

docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/docker.conf

若需要支持WebRTC,需要设置CANDIATE,并开启UDP/8000端口:

CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/docker.conf

若需要HTTPS,需要开启端口映射,并使用配置文件conf/https.*,比如conf/https.docker.conf

CANDIDATE="192.168.1.10"
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 1990:1990 -p 8088:8088 \
    --env CANDIDATE=$CANDIDATE -p 8000:8000/udp \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/https.docker.conf

Note: 请将CANDIDATE设置为服务器的外网地址,详细请阅读WebRTC: CANDIDATE

Note: 注意如果RTMP转WebRTC流播放,必须使用配置文件rtmp2rtc.conf

Remark: 请使用你的证书文件,代替上面配置中的key和cert,请参考 HTTPS API 以及 HTTPS Callback 以及 HTTPS Live Streaming, 当然了HTTPS的反向代理也能和SRS工作很好,比如Nginx代理到SRS。

使用 FFmpeg(点击下载)OBS(点击下载) 推流:

ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream

或者使用FFmpeg的Docker推流,请将192.168.1.10换成你的内网IP:

docker run --rm registry.cn-hangzhou.aliyuncs.com/ossrs/srs:encoder \
  ffmpeg -re -i ./doc/source.200kbps.768x320.flv -c copy -f flv rtmp://192.168.1.10/live/livestream

打开下面的页面播放流(若SRS不在本机,请将localhost更换成服务器IP):

请继续阅读下面的内容,了解更多SRS的信息。

Cloud Virtual Machine

SRS可以在云虚拟机上工作得很好,下面是一些可用的云厂商,以及使用方式:

K8s

推荐使用K8s部署SRS,参考Deploy to Cloud Platforms,视频教程Bilibili: SRS-027-用K8s零命令行部署SRS

SRS提供了一系列的模版项目,可以快速部署到云平台K8s:

请继续阅读下面的内容,了解更多SRS的信息。

Effective SRS

SRS是一个服务器,也可以扩展成集群,还涉及多种协议和场景。下图是SRS的概览大地图,先有个大概印象:

Note: 高清图请看 https://www.processon.com/view/link/619f25c37d9c083e98adb37e

Note: 别被这张图吓到,一般也用不到所有的能力,关键是要花时间看文档,了解这些部分怎么工作的。

我们从几个典型的应用场景来说下上面的大图,更多场景请看Applications

  • 全平台直播,小荷才露尖尖角。只需要上图的Encoders(FFmpeg/OBS)推送RTMP到SRS;一台SRS Origin(不需要Cluster),转封装成HTTP-FLV流转封装成HLS;Players根据平台的播放器可以选HTTP-FLV或HLS流播放。
  • WebRTC通话业务,一对一通话多人通话,会议室等。WebRTC是SRS4引入的关键和核心的能力,从1到3秒延迟,到100到300毫秒延迟,绝对不是数字的变化,而是本质的变化。
  • 监控和广电上云,各行业风起云涌。除了使用FFmpeg主动拉取流到SRS,还可以广电行业SRT协议推流,或监控行业GB28181协议推流,SRS转换成互联网的协议观看。
  • 直播低延迟和互动,聚变近在咫尺。RTMP转WebRTC播放降低播放延迟,还能做直播连麦,或者使用WebRTC推流,未来还会支持WebTransport直播等等。
  • 大规模业务,带你装逼带你飞。如果业务快速上涨,可以通过Edge Cluster支持海量Players,或者Origin Cluster支持海量Encoders,当然可以直接平滑迁移到视频云。未来还会支持RTC的级联和集群。

Note: 这些场景的K8S部署,请参考Edge ClusterOrigin Cluster

每个场景可能会用到一些通用的能力,比如:

如果你更喜欢看视频,可以移步看下面的视频专栏介绍,最后还是要墙裂劝说看一遍Wiki:

再啰嗦一遍:不读Wiki一定扑街,不读文档请不要提Issue,不读文档请不要提问题,任何文档中明确说过的疑问都不会解答。

看完上面的文档,对SRS能做的事情有了大概的了解,可以阅读下面的文档,深入了解SRS。

Deployment Guides

Cluster Guides

Integration Guides

Solution Guides

Develop Guide

Migrate From NGINX-RTMP

  • NG EXEC: 为特殊的事件执行外部程序,譬如exec_publish,当发布流时exec外部程序。

Product & Milestones

  • Milestones: SRS的路线图和产品计划。
  • Why SRS: 为何选择SRS?SRS的路线图?
  • GIT Mirrors: SRS在各个主要GIT站点的镜像,代码都是保持同步的。
  • Main Features: SRS的功能列表。请注意有些功能只有特定的版本才有。请注意有些功能是实验性的。
  • Releases: SRS目前已经发布的版本。
  • Docs: SRS的详细文档。
  • Compare: SRS和其他服务器的对比。
  • Performance: SRS的性能测试报告。

Tech Docs

Join Us

Questions or need help?

其他联系方式,参考联系我们

Winlin 2020.01

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:

Clone this wiki locally