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