直播APP的火爆也提升了大家對直播APP的好奇和理解,直播APP系統(tǒng)是如何開發(fā)的,直播源代碼的運行過程是什么?今天就來說說直播。APP開發(fā)中最重要的一點是直播APP中流媒體的開發(fā)。

首先,眾所周知,直播是將主播錄制的視頻推送到服務(wù)器,然后由服務(wù)器分發(fā)給觀眾觀看。
直播APP開發(fā)的主要環(huán)節(jié)是:推流端(采集、美容處理、編碼、推流)、服務(wù)端處理(轉(zhuǎn)碼、錄制、截圖、鑒黃)、播放器(拉流、解碼、渲染)、互動系統(tǒng)(聊天室、禮品系統(tǒng)、點贊),直播的實現(xiàn)離不開直播系統(tǒng)開發(fā)中的流媒體。首先要了解流媒體。
流媒體,又稱流式媒體,是一種邊傳邊播的媒體,是一種多媒體。邊傳邊播是指媒體提供商在網(wǎng)上傳播媒體“同時”用戶不斷接收、觀看或收聽傳輸?shù)拿襟w。
流媒體技術(shù)首先在用戶端的計算機上創(chuàng)建一個緩沖區(qū),并在播放前下載一段數(shù)據(jù)作為緩沖區(qū)。當(dāng)網(wǎng)絡(luò)的實際連接速度小于播放所消耗的速度時,播放程序?qū)⑹褂眯【彌_區(qū)的數(shù)據(jù),避免播放中斷,保證播放質(zhì)量。
媒體文件從收集到最終播放的路徑是一個完整的流媒體系統(tǒng)所需的部分。APP開發(fā)中流媒體系統(tǒng)的核心包括:
(1)編碼工具:生成流媒體文件的編碼工具。通過一定的算法壓縮原始音視頻數(shù)據(jù),將壓縮數(shù)據(jù)封裝成相應(yīng)的格式,為后續(xù)的數(shù)據(jù)傳輸做準(zhǔn)備。
(2)流媒體服務(wù)器:用于控制和傳輸流媒體數(shù)據(jù)的流媒體服務(wù)器。響應(yīng)客戶端流連接(如RTMP/rtsp等。),返回流媒體數(shù)據(jù)的服務(wù)程序打包在RTMP在等流式協(xié)議中flv/ts等待數(shù)據(jù)。流媒體服務(wù)器是整個流媒體系統(tǒng)的核心,其功能、性能和運行支持能力直接決定了大型流媒體系統(tǒng)的強度。
(3)網(wǎng)絡(luò)協(xié)議:支持特定流量傳輸?shù)木W(wǎng)絡(luò)協(xié)議實際上是一系列規(guī)則和標(biāo)準(zhǔn)的集合,用于交換互聯(lián)網(wǎng)客戶端和服務(wù)器、客戶端和客戶端之間的數(shù)據(jù)。流媒體是在互聯(lián)網(wǎng)上傳輸?shù)奶厥鈹?shù)據(jù),需要有特定的規(guī)則和標(biāo)準(zhǔn)。目前,直播領(lǐng)域的三大網(wǎng)絡(luò)協(xié)議是RTMP,HTTP-FLV,HLS,還有其他類似的HLS商務(wù)HDS/DASH,監(jiān)控領(lǐng)域的RTSP,目前比較活躍WebRTC,還有很多基礎(chǔ)UDP平臺內(nèi)的私人協(xié)議。
(4)播放器:每個操作平臺用于顯示丟失數(shù)據(jù)的播放器??蛻舳藦姆?wù)器收到所需的流媒體數(shù)據(jù)后,播放器將解決協(xié)議、解封、解碼、音視頻同步。
在直播中,要想進行推拉流,就必須使用流媒體傳輸協(xié)議,沒有傳輸協(xié)議,視頻流無法傳輸。
常用的流媒體協(xié)議主要有HTTP漸進下載和基礎(chǔ)RTSP/RTP有兩種實時流媒體協(xié)議,原則上,RTSP,RTMP,HTTP可以做直播和點播,通常做直播開發(fā)會用RTMP協(xié)議。
APP用于直播開發(fā)RTMP協(xié)議有什么優(yōu)勢?
RTMP協(xié)議(RealTimeMessagingProtocol)是一種流媒體傳輸協(xié)議,是一種直播APP最常用的流媒體傳輸協(xié)議,其主要優(yōu)點是延遲低。
RTMP當(dāng)協(xié)議傳輸數(shù)據(jù)時,整個數(shù)據(jù)流被封裝成FLV通過HTTP提供,所以服務(wù)器上不會有落地文件,基于服務(wù)器,TCP長連接,不需要多次建連,所以延遲一般為1-3s,遠超HLS。
所以,從直播開始APP從開發(fā)的角度來看,直播的流暢性非常重要,因此,RTMP協(xié)議無疑是最合適的。