首先,今天偶爾看了莊明浩先生的一篇演講,大概內容以下(想看完整版的在這裏 https://zhuanlan.zhihu.com/p/20717041):html
直播大概是最近一段時間被資本市場瘋狂關注,如今咱們看到的這些公司上線都已經有段時間.以鬥魚爲表明的直播平臺,自14年創立到 如今已經有倆年的時間了。映客這一波爲表明公司 ,創立的時候應該是15年年初。在15年下半年的時候,他們火過一波。今天爲何關注呢?有不少的緣由,有資本市場的緣由,有行業發展的緣由,固然也有這些公司估值的緣由等等。做爲一個觀察者,可能更可能是一個用戶。直播這倆年行業發展的很快,因此有不少新的事情。算法
我的感受:數據庫
1.直播將來會成爲全部人的「標配」,甚至不侷限在視頻行業;編程
2.遠期是整個大視頻領域的競爭;緩存
3.全部人的目標其實只有一個:搶佔用戶的時間;服務器
4.全部公司對直播的出發點只是秒開,流暢,美顏這三點;運維
那麼問題來了,對於創業公司 ,「直播系」的大時代有可能成爲平臺嗎?大視頻領域也好,大社交領域也好,都已經有巨頭存在了。獨立的直播類公司比較難以獨立生存。在中國,直播分爲倆個派系,一是遊戲拓展娛樂領域的在線直播平臺;其次就是以映客 、花椒直播爲表明的以手機爲載體、強調人人蔘與、更強調社交的移動社交直播,這倆類公司有可能成爲獨立的平臺,跟全部的娛樂也好,社交也好,並行在發展,創業公司基本集中在這倆個類目裏面。中國有幾個數據,你們可能沒有據說過。1.中國真正意義上的直播,在各家直播平臺作直播,或者註冊經營的公司,大概在150萬人左右,這是什麼意思?比中國的出租司機都要多。咱們全部的直播平臺加在一塊兒,覆蓋的用戶大概在三四千萬左右,一天可能比打車的人還要多。簡單的來說,中國的網民大概有六點幾億,遊戲用戶大概有四點幾億,不到點五億,一天全部的平臺加起來,已經跑到3000萬了。倆年的時間,遊戲的人羣吃完以後呢?分佈式
好了,下面進入正題:性能
如何搭建一個完整的視頻直播系統?一個完整的直播系統大體包含這幾個環節:採集,前處理 ,編碼,傳輸,解碼和渲染。在兩端 傳輸的過程當中再加上一個服務端處理。大體模型以下:編碼
在主播推流端涉及到的環節有采集、前處理和編碼,在觀衆端涉及到的環節就是解碼和渲染,在這倆個端之間創建起傳輸通道的則是服務端,它負責接收主播端的推流,將其處理以後分發給觀衆播放端 :
1.採集
對iOS是比較簡單的,Android則要作些機型適配工做,PC最麻煩各類奇葩攝像頭驅動,出了問題特別很差處理,建議放棄PC只只支持手機 主播,目前幾個新近的直播平臺都是這樣的。
2.前處理
如今直播美顏已是標配,80%的主播 沒有美顏根本無法看。美顏算法須要用到 GPU編程,須要懂圖像處理算法的人,沒有好的開源實現,要本身參考論文去研究 。難點不在於美顏效果,而在於GPU佔用 和美顏效果之間找平衡。GPU雖然性能好,可是也是有功耗的,GPU佔用過高會致使手機發燙,而手機發燙會致使 攝像頭採集掉幀,iPhone6尤爲明顯,由於iPhone6的CPU和前置攝像頭很近。
3.編碼
確定要採用硬編碼,軟編碼720p徹底沒但願,勉強能編碼也會致使CPU過熱燙到攝像頭。硬編碼 兼容性又是一個大坑,Android上要有人去填。編碼 要在 分辨率,幀率,碼率,GOP等參數設計上找到最佳平衡點。
4.傳輸
本身作不是很現實,交給 CDN服務器商,也就是貴了點,相信 有志於作直播平臺改變世界的你不差錢。假設2W PCU大約每個月帶寬費用 100萬左右,由於清晰流暢的720p要1.5mbps左右。CDN只提供了帶寬和服務器見得傳輸,發送和接收端的網路 鏈接抖動緩衝仍是 要 本身寫的。不想要卡頓,必然要加大緩衝,會致使延遲高,延遲高影響互動性,要作權衡。
5.解碼
也確定要硬解碼,目前手機支持硬解了,只是安卓上還有兼容性 大坑要填。
6.渲染
這個難點不在於繪製,而在於音畫同步,目前幾個直播作的都很差, 此外音頻還有幾個坑要填,好比降噪,音頻編碼器的選擇,各類藍牙耳機,各類播放模式的適配等,若是你想作主播和觀衆連線聊天,還要有個回聲消除的問題。
後臺還有數據庫 ,緩存,分佈式文件存儲,消息隊列,運維繫統等。