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