SRS學(xué)習(xí)路徑

新同學(xué)專用的學(xué)習(xí)路徑,請(qǐng)一定按照文檔操作。
文章中有較多的鏈接,鏈接地址是在文末尾的。也可以點(diǎn)文末尾的閱讀原文,查看本文在簡書上的版本。
快速預(yù)覽
先過第一個(gè)門檻:看到直播和WebRTC長什么樣子,能跑出來下圖的效果,需要5~15分鐘左右。

Note: 這個(gè)看似很容易,甚至直接在SRS官網(wǎng)[1]中就能點(diǎn)開兩個(gè)頁面,但是一定要自己用SRS搭建出來才算,而不是直接打開線上的演示網(wǎng)頁。
具體怎么做呢?請(qǐng)參考Wiki: Getting Started[2]。
接觸一個(gè)新的東西,首先就要有直觀的體驗(yàn)和感覺,這個(gè)門檻雖然看起來很簡單,但是它涉及到了音視頻的幾乎全鏈路的東西:
?FFmpeg,強(qiáng)大的音視頻客戶端,推拉流和編解碼,以及各種處理的能力。?Chrome(或?yàn)g覽器),H5是最便捷的客戶端,非常方便演示和學(xué)習(xí),SRS功能基本上都有H5的演示。?音視頻協(xié)議:RTMP,HTTP-FLV,HLS和WebRTC,這些操作步驟中,已經(jīng)涉及到了這些協(xié)議,也是實(shí)際應(yīng)用中典型的用法。?SRS服務(wù)器,自己部署音視頻云,或者提供音視頻的云服務(wù),SRS本質(zhì)上就是視頻云的一種服務(wù)器。
Note: 上面的拼圖還缺少移動(dòng)端,其實(shí)移動(dòng)端只是一種端,而并沒有新的協(xié)議,也可以下載SRS直播[3]客戶端,體驗(yàn)上面的推流和播放,也可以輸入你的服務(wù)器的流地址播放。
深入場(chǎng)景
第二個(gè)門檻:了解音視頻應(yīng)用的各個(gè)典型場(chǎng)景,大約五個(gè)核心場(chǎng)景,總共需要3~7天左右。
請(qǐng)根據(jù)Github: Wiki[4],或者國內(nèi)請(qǐng)?jiān)L問Gitee: Wiki[5],這里詳細(xì)描述了各個(gè)場(chǎng)景會(huì)使用到的技術(shù),內(nèi)容都是一樣的,Wiki會(huì)同步更新到Github和Gitee。
典型的音視頻業(yè)務(wù)場(chǎng)景,包括但不限于:
?全平臺(tái)直播,小荷才露尖尖角。只需要上圖的Encoders(FFmpeg/OBS)推送RTMP到SRS[6];一臺(tái)SRS Origin(不需要Cluster),轉(zhuǎn)封裝成HTTP-FLV流[7]、轉(zhuǎn)封裝成HLS[8];Players根據(jù)平臺(tái)的播放器可以選HTTP-FLV或HLS流播放。?WebRTC通話業(yè)務(wù),一對(duì)一通話,多人通話,會(huì)議室等。WebRTC[9]是SRS4引入的關(guān)鍵和核心的能力,從1到3秒延遲,到100到300毫秒延遲,絕對(duì)不是數(shù)字的變化,而是本質(zhì)的變化。?監(jiān)控和廣電上云,各行業(yè)風(fēng)起云涌。除了使用FFmpeg主動(dòng)拉取流到SRS[10],還可以廣電行業(yè)SRT協(xié)議[11]推流,或監(jiān)控行業(yè)GB28181協(xié)議[12]推流,SRS轉(zhuǎn)換成互聯(lián)網(wǎng)的協(xié)議觀看。?直播低延遲和互動(dòng),聚變近在咫尺。RTMP轉(zhuǎn)WebRTC播放[13]降低播放延遲,還能做直播連麥,或者使用WebRTC推流,未來還會(huì)支持WebTransport直播等等。?大規(guī)模業(yè)務(wù),帶你裝逼帶你飛。如果業(yè)務(wù)快速上漲,可以通過Edge Cluster[14]支持海量Players,或者Origin Cluster[15]支持海量Encoders,當(dāng)然可以直接平滑遷移到視頻云。未來還會(huì)支持RTC的級(jí)聯(lián)和集群。
每個(gè)場(chǎng)景都可以自己搭建出來典型的應(yīng)用。
了解細(xì)節(jié)
第三個(gè)門檻:了解每個(gè)縱向的技術(shù)點(diǎn),應(yīng)用場(chǎng)景,代碼和問題排查,大約3~6月左右。
?視頻專欄[16],包括環(huán)境搭建,代碼分析,還有零聲學(xué)院專業(yè)老師的講解。?解決方案[17],大家在各個(gè)不同場(chǎng)景中,應(yīng)用SRS的分享和探索。?部署方案[18],如何部署實(shí)現(xiàn)不同的具體功能,這些功能可以組合起來使用。?集群和擴(kuò)展[19],當(dāng)業(yè)務(wù)量上升,如何擴(kuò)展單機(jī)到集群,如何服務(wù)不同區(qū)域的用戶。?集成和定制[20],如何和現(xiàn)有系統(tǒng)對(duì)接,如何驗(yàn)證用戶,安全和防盜鏈機(jī)制等。?深度分析[21],協(xié)程原理,代碼分析,高性能服務(wù)器框架,性能優(yōu)化等。
如果能踏踏實(shí)實(shí)的了解完SRS,音視頻真不難。
如果總想著三分鐘XXX,那可不是很難么?
References
[1]?SRS官網(wǎng):?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]?轉(zhuǎn)封裝成HTTP-FLV流:?https://gitee.com/ossrs/srs/wikis/v4_CN_SampleHttpFlv[8]?轉(zhuǎn)封裝成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協(xié)議:?https://gitee.com/ossrs/srs/wikis/v4_CN_SRTWiki[12]?GB28181協(xié)議:?https://github.com/ossrs/srs/issues/1500#issue-528623588[13]?RTMP轉(zhuǎn)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]?集群和擴(kuò)展:?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
