流媒体系统
一套大規模的流媒體系統,由編碼工具負責對音視頻文件編碼壓縮(h.264/h.265/VP9/AAC等);由流媒體服務器負責對數據包進行容器封裝(flv/ts等)以及負責網絡協議打包(RTMP/HTTP等);由CDN網絡進行全網分發;由播放層負責對圖像進行解碼顯示(FLASH/VLS/VIDEO JS等)。
流媒體服務器
流媒體服務器簡單來說就是直接向客戶端響應流式連接(如RTMP/RTSP等),返回流媒體數據(打包在RTMP等流式協議中的flv/ts等數據)的服務器程序。流媒體服務器直接承擔流媒體數據的輸出,是整個流媒體系統的核心,它的功能、性能、運行支撐能力直接決定了一個大型流媒體系統的健壯程度。
下圖給出了用戶在請求流媒體數據的過程:
-
觀看者通過交互界面先請求web server;
-
webserver將這些RTMP等流式連接轉到流媒體服務器;
-
流媒體服務將對應的實時媒體數據通過RTMP等協議傳送給觀看者的Player。
下圖以RTSP流式協議為例給出了流媒體服務器最簡單的功能原理:
-
RTP協議主要用來實際承載實時傳送的流媒體數據,包括音視頻數據,以及所攜帶負載的時間戳,順序號等。
-
RTCP主要完成接收者收到某個多媒體流的服務質量信息Qos,用于對服務器端的反饋。
-
RTSP(Real Time Streaming Protocol)是一種控制協議,完成對RTP中的流媒體數據進行各種狀態的控制。主要包括如播放、暫停、快進、錄制、結束播放等控制功能,也就是RTSP對多媒體服務器實施網絡遠程控制。
CDN分發網絡
CDN(Content Delivery Network),即內容分發網絡。簡單來說CDN網絡是在各地建設邊緣節點,將源站的內容分發到距離用戶最近的網絡邊緣節點上,使得用戶可以就近獲取所需內容,以此來解決 Internet用網高峰期擁擠的狀況和跨網絡運營商響應慢的問題,整體上提升了用戶訪問網站的響應速度。典型的CDN架構如下:
下圖是直播CDN組網和調度基本思路:
-
主播推送流媒體數據到流媒體服務器(源站) ,目前的直播應用一般還有上行加速過程,即主播先推送到最近的節點,節點再轉推到源站;
-
源站進行流媒體數據的分發;
-
觀眾點開播放器播放某直播流,經過域名解析后向CDN請求流媒體數據;
-
CDN經過調度將該請求分配給離該觀眾最近的邊緣節點,若節點上沒有該直播流存在,則節點向源站繼續請求流媒體數據;若節點上已有了該直播流,則直接響應流數據;
-
源站響應節點的請求,將流數據分發給該邊緣節點;
-
邊緣節點將流媒體數據傳送給該觀眾的播放器。
網絡協議
網絡協議指的是為了讓互聯網中客戶端與服務端之間,客戶端與客戶端之間進行數據交換而建立的一系列規則、標準等的集合。流媒體是在互聯網上傳輸的特殊數據,需要有特定的規則和標準和承載,這就是我們要著重說的流媒體網絡協議。
目前網絡直播應用的三大主要網絡協議是RTMP、HTTP-FLV、HLS,其它還有類似HLS的HDS/DASH、監控領域的RTSP,目前比較活躍的WebRTC、以及很多基于UDP的平臺內的私有協議。
播放器
流媒體播放器實現的功能和流程與編碼工具剛好相反,歷經解協議,解封裝,解碼視音頻,視音頻同步幾個主干環節。
總結
- 上一篇: 蓝牙无线串口调试器
- 下一篇: 移动硬盘安装操作系统以win7为例子