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