直播APP開發的火爆,是順應時代發展市場需求的產物,直播系統屬於視覺快消類產品,內容豐富多彩,產品設計簡單,不須要任何商品做爲支撐,只須要在知足用戶的需求基礎上作更好的體驗優化,以及藉助各大流量渠道來達成宣傳品牌的目的便可,能夠說直播APP開發的市場風險是較小的。所以愈來愈多的人想要開發一款仿快手、仿抖音、仿映客、仿花椒的直播系統。
視頻直播,能夠分爲 採集,前處理,編碼,傳輸,解碼,渲染 這幾個環節:
採集,iOS是比較簡單的,Android則要作些機型適配工做,PC最麻煩各類奇葩攝像頭驅動,出了問題特別很差處理,建議放棄PC只支持手機主播,目前幾個新進的直播平臺都是這樣的。
編碼,確定要採用硬編碼,軟編碼720p徹底沒但願,勉強能編碼也會致使CPU過熱燙到攝像頭。硬編碼兼容性又是一個大坑,android上要有人去填。編碼要在分辨率,幀率,碼率,GOP等參數設計上找到最佳平衡點。
傳輸,本身作不現實,交給CDN服務商吧,也就是貴了點,相信有志於作直播平臺改變世界的你不差錢。假設2W PCU大約每個月帶寬費用100萬左右,由於清晰流暢的720p要1.5mbps左右。CDN只提供了帶寬和服務器間傳輸,發送和接收端的網絡鏈接抖動緩衝仍是要本身寫的。不想要卡頓,必然要加大緩衝,會致使延遲高,延遲高影響互動性,要作權衡。
解碼,也確定要硬解碼,目前手機廣泛支持硬解了,只是android上仍是有兼容性大坑要填。
渲染,這個難點不在於繪製,而在於音畫同步,目前幾個直播作得都很差。
常見的視頻直播相關協議:
RTMP(Real Time Messaging Protocol,實時消息傳送協議)
RTMP是Adobe Systems公司爲Flash播放器和服務器之間音頻、視頻和數據傳輸開發的開放協議。它有三種變種:
工做在TCP之上的明文協議,使用端口1935;
RTMPT封裝在HTTP請求之中,可穿越防火牆;
RTMPS相似RTMPT,但使用的是HTTPS鏈接;
RTMP協議是被Flash用於對象、視頻、音頻的傳輸。這個協議創建在TCP協議或者輪詢HTTP協議之上。RTMP協議就像一個用來裝數據包的容器,這些數據既能夠是AMF格式的數據,也能夠是FLV中的視音頻數據。一個單一的鏈接能夠經過不一樣的通道傳輸多路網絡流,這些通道中的包都是按照固定大小的包傳輸的。
RTCP(Real-time Transport Control Protocol,實時傳輸控制協議)
RTCP是RTP的配套協議,爲RTP媒體流提供信道外的控制。RTCP和RTP一塊兒協做將多媒體數據打包和發送,按期在多媒體流會話參與者之間傳輸控制數據。
RTCP的主要功能是爲RTP所提供的服務質量(QoS)提供反饋,收集相關媒體鏈接的統計信息,例如傳輸字節數,傳輸分組數,丟失分組數,單向和雙向網絡延遲等等。網絡應用程序能夠利用RTCP所提供的信息來提升服務質量,好比限制流量或改用壓縮比小的編解碼器。
這些顯然不是一個程序員能解決的。
技術是直播APP製做的支撐。行業經驗、技術性團隊,這所有都是可以開發出一個優秀APP的團隊必須具有的;性價比也要高,性價比可不僅僅指的是價格,有些公司定製開發APP只盯着價格,以爲價格低的纔是好的。可是每每低價格開發出的APP都不能使用,最後只能從新開發。這就是爲何,布穀鳥直播APP製做團隊必定要勸說每個定製開發APP的企業選擇專業公司,由於這樣才能保證性價比的均衡;流暢穩定、安全兼容性強。直播類APP對於系統兼容性的要求更高,在直播過程當中要求畫面清晰流暢,沒有閃退等狀況。一旦出現這種狀況會嚴重下降用戶的體驗感。android