新同学专用的学习路径,请一定按照文档操作。
文章中有较多的链接,链接地址是在文末尾的。也可以点文末尾的阅读原文,查看本文在简书上的版本。
快速预览
先过第一个门槛:看到直播和WebRTC长什么样子,能跑出来下图的效果,需要5~15分钟
左右。
Note: 这个看似很容易,甚至直接在SRS官网[1]中就能点开两个页面,但是一定要自己用SRS搭建出来才算,而不是直接打开线上的演示网页。
具体怎么做呢?请参考Wiki: Getting Started[2]。推荐用SRS云服务器快速跑通,你也可以用宝塔快速部署,请看视频教程:
接触一个新的东西,首先就要有直观的体验和感觉,这个门槛虽然看起来很简单,但是它涉及到了音视频的几乎全链路的东西:
•FFmpeg,强大的音视频客户端,推拉流和编解码,以及各种处理的能力。•Chrome(或浏览器),H5是最便捷的客户端,非常方便演示和学习,SRS功能基本上都有H5的演示。•音视频协议:RTMP,HTTP-FLV,HLS和WebRTC,这些操作步骤中,已经涉及到了这些协议,也是实际应用中典型的用法。•SRS服务器,自己部署音视频云,或者提供音视频的云服务,SRS本质上就是视频云的一种服务器。
Note: 上面的拼图还缺少移动端,其实移动端只是一种端,而并没有新的协议,也可以下载SRS直播[3]客户端,体验上面的推流和播放,也可以输入你的服务器的流地址播放。
深入场景
第二个门槛:了解音视频应用的各个典型场景,大约五个核心场景,总共需要3~7天
左右。
请根据Github: Wiki[4],或者国内请访问Gitee: Wiki[5],这里详细描述了各个场景会使用到的技术,内容都是一样的,Wiki会同步更新到Github和Gitee。
典型的音视频业务场景,包括但不限于:
•全平台直播,小荷才露尖尖角。只需要上图的Encoders(FFmpeg/OBS)推送RTMP到SRS[6];一台SRS Origin(不需要Cluster),转封装成HTTP-FLV流[7]、转封装成HLS[8];Players根据平台的播放器可以选HTTP-FLV或HLS流播放。•WebRTC通话业务,一对一通话,多人通话,会议室等。WebRTC[9]是SRS4引入的关键和核心的能力,从1到3秒延迟,到100到300毫秒延迟,绝对不是数字的变化,而是本质的变化。•监控和广电上云,各行业风起云涌。除了使用FFmpeg主动拉取流到SRS[10],还可以广电行业SRT协议[11]推流,或监控行业GB28181协议[12]推流,SRS转换成互联网的协议观看。•直播低延迟和互动,聚变近在咫尺。RTMP转WebRTC播放[13]降低播放延迟,还能做直播连麦,或者使用WebRTC推流,未来还会支持WebTransport直播等等。•大规模业务,带你装逼带你飞。如果业务快速上涨,可以通过Edge Cluster[14]支持海量Players,或者Origin Cluster[15]支持海量Encoders,当然可以直接平滑迁移到视频云。未来还会支持RTC的级联和集群。
每个场景都可以自己搭建出来典型的应用。
了解细节
第三个门槛:了解每个纵向的技术点,应用场景,代码和问题排查,大约3~6月
左右。
•视频专栏[16],包括环境搭建,代码分析,还有零声学院专业老师的讲解。•解决方案[17],大家在各个不同场景中,应用SRS的分享和探索。•部署方案[18],如何部署实现不同的具体功能,这些功能可以组合起来使用。•集群和扩展[19],当业务量上升,如何扩展单机到集群,如何服务不同区域的用户。•集成和定制[20],如何和现有系统对接,如何验证用户,安全和防盗链机制等。•深度分析[21],协程原理,代码分析,高性能服务器框架,性能优化等。
如果能踏踏实实的了解完SRS,音视频真不难。
如果总想着三分钟XXX,那可不是很难么?
References
[1]
SRS官网: https://ossrs.net
[2]
Wiki: Getting Started: https://github.com/ossrs/srs/wiki/v4_CN_Home#getting-started
[3]
SRS直播: http://ossrs.net/releases/app.html
[4]
Github: Wiki: https://github.com/ossrs/srs/wiki/v4_CN_Home#effective-srs
[5]
Gitee: Wiki: https://gitee.com/ossrs/srs/wiki/v4_CN_Home#effective-srs
[6]
推送RTMP到SRS: https://gitee.com/ossrs/srs/wikis/v4_CN_SampleRTMP
[7]
转封装成HTTP-FLV流: https://gitee.com/ossrs/srs/wikis/v4_CN_SampleHttpFlv
[8]
转封装成HLS: https://gitee.com/ossrs/srs/wikis/v4_CN_SampleHLS
[9]
WebRTC: https://gitee.com/ossrs/srs/wikis/v4_CN_WebRTC
[10]
拉取流到SRS: https://gitee.com/ossrs/srs/wikis/v4_CN_Ingest
[11]
SRT协议: https://gitee.com/ossrs/srs/wikis/v4_CN_SRTWiki
[12]
GB28181协议: https://github.com/ossrs/srs/issues/1500#issue-528623588
[13]
RTMP转WebRTC播放: https://github.com/ossrs/srs/issues/307#issue-76908382
[14]
Edge Cluster: https://gitee.com/ossrs/srs/wikis/v4_CN_SampleRTMPCluster
[15]
Origin Cluster: https://gitee.com/ossrs/srs/wikis/v4_CN_OriginCluster
[16]
视频专栏: https://gitee.com/ossrs/srs/wikis/v4_CN_Home#video-guides
[17]
解决方案: https://gitee.com/ossrs/srs/wikis/v4_CN_Home#solution-guides
[18]
部署方案: https://gitee.com/ossrs/srs/wikis/v4_CN_Home#deployment-guides
[19]
集群和扩展: https://gitee.com/ossrs/srs/wikis/v4_CN_Home#cluster-guides
[20]
集成和定制: https://gitee.com/ossrs/srs/wikis/v4_CN_Home#integration-guides
[21]
深度分析: https://gitee.com/ossrs/srs/wikis/v4_CN_Home#develop-guide