在開發(fā)直播系統(tǒng)平臺中,會運用到非常多的技術(shù)難點,例如視頻/音頻處理,圖形處理、視頻/音頻壓縮、CDN分發(fā)等,每一個技術(shù)都夠?qū)W好幾年的。今天拓幻科技就跟大家介紹一下開發(fā)一套視頻直播系統(tǒng),整個流程中所運用到的技術(shù)原理大概是哪些。
首先我們來了解一下一個完整的直播APP原理是:把主播錄制的視頻,推送到服務(wù)器,再由服務(wù)器分發(fā)給觀眾觀看。
流程: 采集 —>處理—>編碼和封裝—>推流到服務(wù)器—>服務(wù)器流分發(fā)—>播放器流播放
1. 采集視頻、音頻
采集是整個視頻推流過程中的第一個環(huán)節(jié),它從系統(tǒng)的采集設(shè)備中獲取原始視頻數(shù)據(jù),將其輸出到下一個環(huán)節(jié)。視頻的采集是指音頻采集和圖像采集:音頻數(shù)據(jù)既能與圖像結(jié)合組合成視頻數(shù)據(jù),也能以純音頻的方式采集播放,純音頻采集播放在很多成熟的應(yīng)用場景如在線電臺和語音電臺等起著非常重要的作用。圖像采集是將圖像采集的圖片結(jié)果組合成一組連續(xù)播放的動畫,即構(gòu)成視頻中可肉眼觀看的內(nèi)容。對于采集,PC端需要各種型號的攝像頭的驅(qū)動,Andriod端要做很多手機機型的適配工作,ios端就比較簡單。
2.視頻處理(如美顏、水印)
視頻或者音頻完成采集之后得到原始數(shù)據(jù),為了增強一些現(xiàn)場效果或者加上一些額外的效果,我們一般會在將其編碼壓縮前進行處理,處理環(huán)節(jié)中分為音頻和視頻處理,音頻處理中具體包含混音、降噪和聲音特效等處理,視頻處理中包含美顏、水印、以及各種自定義濾鏡等處理。美顏美化功能是在線直播系統(tǒng)開發(fā)的標配,且以動態(tài)貼紙為代表的AI技術(shù)也被廣泛應(yīng)用于音視頻直播系統(tǒng)方案中。
3.編解碼、封裝
編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程也稱為計算機編程語言的代碼簡稱編碼。解碼,是編碼的逆過程,使用相關(guān)硬件或軟件對接收到的編碼后的音視頻數(shù)據(jù)進行解碼,得到可以直接顯示的圖像或聲音。編解碼就好比物流系統(tǒng)中配貨和裝貨的過程,這個過程直接就影響視頻圖像文字在網(wǎng)絡(luò)傳輸中的速度。封裝,就類似媒體的容器,是把編碼器生成的多媒體內(nèi)容(視頻,音頻,字幕,章節(jié)信息等)混合封裝在一起的標準。封裝使得不同多媒體內(nèi)容同步播放變得簡單,也為多媒體內(nèi)容提供索引,也就是說如果沒有封裝存在的話一部影片你只能從一開始看到最后,不能拖動進度條,而且如果你不自己去手動另外載入音頻就沒有聲音。
4.推流到服務(wù)器
推流,就是將采集到的音頻、視頻數(shù)據(jù)通過流媒體協(xié)議發(fā)送到流媒體服務(wù)器。推流對這個直播鏈路影響非常大,如果推流的網(wǎng)絡(luò)不穩(wěn)定,無論我們?nèi)绾巫鰞?yōu)化,觀眾的體驗都會很糟糕,所以也是我們排查問題的第一步。推送協(xié)議主要有三種:
(1)RTSP(Real Time Streaming Protocol):實時流傳送協(xié)議,是用來控制聲音或影像的多媒體串流協(xié)議, 由Real Networks和Netscape共同提出的;
(2)RTMP(Real Time Messaging Protocol):實時消息傳送協(xié)議,是Adobe公司為Flash播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸 開發(fā)的開放協(xié)議;
(3)HLS(HTTP Live Streaming):是蘋果公司(Apple Inc.)實現(xiàn)的基于HTTP的流媒體傳輸協(xié)議。
RTMP 是目前主流的流媒體傳輸協(xié)議,廣泛用于直播領(lǐng)域,可以說市面上絕大多數(shù)的直播產(chǎn)品都采用了這個協(xié)議,也有部分使用HLS協(xié)議。
5.服務(wù)器流分發(fā)
流媒體服務(wù)器的作用是負責(zé)直播流的發(fā)布和轉(zhuǎn)播分發(fā)功能。
常用服務(wù)器
SRS:一款國人開發(fā)的優(yōu)秀開源流媒體服務(wù)器系統(tǒng)
BMS:也是一款流媒體服務(wù)器系統(tǒng),但不開源,是SRS的商業(yè)版,比SRS功能更多
nginx:免費開源Web服務(wù)器,常用來配置流媒體服務(wù)器
自建流媒體服務(wù)器局限性很大,費用也比較高昂,建議交給CDN服務(wù)商。
6. 播放器流播放
主要是實現(xiàn)直播節(jié)目在終端上的展現(xiàn)。如果使用的傳輸協(xié)議是RTMP, 那么只要支持 RTMP 流協(xié)議的播放器都可以使用,譬如:電腦端:VLC等;手機端:Vitamio以及ijkplayer等。
希望通過以上直播技術(shù)原理的闡述,在幫助大家更好地了解直播系統(tǒng)如何搭建的同時,也能夠幫助大家優(yōu)化自己的直播系統(tǒng)解決方案。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!