我想做視頻直播app?
我曾經(jīng)做過直播核心流程的開發(fā),我就我以前的一些經(jīng)驗,和大家分享一下
1.直播的推拉流,編解碼,秒開,高斯模糊,連麥,消除回音,卡頓,進去直播間首幀丟失,出現(xiàn)黑屏,這一類音視頻技術,可能你需要有一定的了解,或者你的團隊有所了解,你需要知道rtmp協(xié)議,cdn加速,云端混流,音視頻的基本格式,當然這些不需要你從頭到尾實現(xiàn)一遍,但是你需要了解,這些你可以購買,例如阿里云,騰訊云,七牛云,聲網(wǎng)等都提供了一些服務,并且都在實戰(zhàn)中進行了落地,例如斗魚,陌陌,虎牙等一線直播平臺
2.送禮核心交易流程,這和京東淘寶等實體貨幣交易流程實現(xiàn)邏輯還是不一致的,目前主流的直播平臺都有代幣的概念,例如斗魚的魚翅,虎牙的虎糧等,也沒有去庫存的問題,分布式事務一致性的問題還是相對于電商來說,場景處理簡單,但是數(shù)據(jù)一致性,防盜刷,高并發(fā),有時候相比于電商平臺有過之而無不及,特別是高峰期的送禮比較高,這點在設計上需要好好考慮,后期的對賬,分成,財務系統(tǒng)也是在開發(fā)初期需要好好設計思考,保證系統(tǒng)具備一定的彈性和可擴展性
3.直播間的玩法,很多直播間的玩法都是與送禮緊緊相關的,所以在送禮扣除代幣的基礎上,還要有MQ去分發(fā)事件,一個禮物送禮成功,可能會使用MQ的扇出模式,會有多個消費者,可能你需要計算用戶等級,主播等級,大額禮物全直播間廣播,用戶主播任務的完成,某某活動的完成,排行榜,都會帶來一系列的變化,你的架構(gòu)要可擴展,實時性要高
4.直播間內(nèi)信息,左上角的主播信息,用戶和主播的關注體系,排行榜信息,觀眾席,實時用戶列表,公屏信息,彈幕信息,進場通知,用戶的信息,例如房管,粉絲牌,勛章,等級等等,這些都需要去做實現(xiàn),東西復雜,實現(xiàn)困難也不算很低
5.IM的設計,你送一個禮物,禮物的效果語言在別人的手機上可見,你發(fā)送一個彈幕別人的手機可見,這是需要TCP長連接來實現(xiàn),如何實現(xiàn)一個高可用的IM也是你做思考和實現(xiàn)的,切換直播間,IM體系中的實時用戶群組管理都是很實時的,消息下發(fā)不能錯發(fā),漏發(fā)
6.消息降級,當IM宕機的情況,如何保持消息的可用性,這可以使用客戶端的定時輪詢,每隔1s,或者2s http請求,獲取消息,用戶無感知,用戶體驗體驗差距不大,可用性不會因為IM的問題而降低,請注意,這個不是可有可無的方案,而是你一定要思考并且實現(xiàn)的技術實現(xiàn),你試想一下,如果你需要向一個實時真實在線20w人的直播間下發(fā)一個消息,IM的出口帶寬需要多大,這是你不能通過加機器水平擴展能解決問題的,不管你是使用各種方式,去降低每個消息體大小,總有一個數(shù)量級你是扛不住的,所以短輪詢的方式你是需要實現(xiàn)的
7.文本監(jiān)控,視頻內(nèi)容源監(jiān)控,這個也要去做,千萬不要忽視“綠色上網(wǎng),文明直播”的問題,這邊可以借用第三方能力,不細說可以實現(xiàn)
8.系統(tǒng)可用性監(jiān)控,直播的監(jiān)控很多,視頻流的監(jiān)控,推流監(jiān)控,消息到達率監(jiān)控,核心接口監(jiān)控,客戶端埋點等等,謝謝也都要去做實現(xiàn),否則系統(tǒng)出問題你都不知道哪里出問題
大概能想起的就是這么多了,如果有不對的,可以私聊溝通,一起學習,感謝