Clone
1
migrate_v4_CN_introduction
winlin edited this page 2022-07-31 18:36:08 +08:00
This file contains ambiguous Unicode characters

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.

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流转封装成HLSPlayers根据平台的播放器可以选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: 为何选择SRSSRS的路线图
  • 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